我尝试过使用 List 和 Map,但我无法弄清楚如何强制 Hibernate 3.6.4 在这些集合中保留空值。这是我尝试过的:
@ElementCollection(fetch=FetchType.EAGER)
@Column(columnDefinition="longtext")
private Map<Integer, String> parameterValues;
和
@ElementCollection(fetch=FetchType.EAGER)
@OrderColumn
@Lob @Column(length=65535)
private List<String> parameterValues;
如果 Map 或 List 包含一个空值,Hibernate 不会将它持久保存在集合表中的一行中。从数据库中检索集合时,它的元素比存储时少,因为那些为 null 的元素不会被恢复。列表恢复了具有非空值的第一个和最后一个索引之间的索引的空值,但列表末尾的任何空值都被忽略了。Map 仅包含非空值的条目。
我希望这是有道理的。对我来说,这似乎是 Hibernate 中的一个错误,但我希望它可以通过不同的配置来修复。