【发布时间】:2010-11-08 18:04:48
【问题描述】:
我有一个名为 SynonymMapping 的类,它有一组映射为 CollectionOfElements 的值
@Entity(name = "synonymmapping")
public class SynonymMapping {
@Id private String keyId;
//@CollectionOfElements(fetch = FetchType.EAGER)
@CollectionOfElements
@JoinTable(name="synonymmappingvalues", joinColumns={@JoinColumn(name="keyId")})
@Column(name="value", nullable=false)
@Sort(type=SortType.NATURAL)
private SortedSet<String> values;
public SynonymMapping() {
values = new TreeSet<String>();
}
public SynonymMapping(String key, SortedSet<String> values) {
this();
this.keyId = key;
this.values = values;
}
public String getKeyId() {
return keyId;
}
public Set<String> getValues() {
return values;
}
}
我有一个测试,我将两个 SynonymMapping 对象存储到数据库,然后要求数据库返回所有保存的 SynonymMapping 对象,期望接收我存储的两个对象。
当我将值的映射更改为渴望(如代码中注释掉的行所示)并再次运行测试时,我收到了四个匹配项。
我已经在运行之间清除了数据库,我可以在急切和懒惰之间重复这个问题。
我认为这与 hibernate 在下面创建的连接有关,但我在网上找不到明确的答案。
谁能告诉我为什么急切的提取会复制对象?
谢谢。
【问题讨论】:
-
每个出现异常“找到多个具有给定标识符的行”的人都应该知道这一点。它真的节省了很多时间,不知道到底出了什么问题。见@user176668 回答!!
标签: java hibernate annotations