我有一个名为SynonymMapping类,其具有映射为CollectionOfElements休眠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答案! – 2016-05-27 10:31:44