@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对象,期望接收到我存储的两个对象。
当我将值的映射更改为eager(如代码中注释掉的那行所示)并再次运行测试时,我会收到四个匹配项。
我已经在运行之间清空了数据库,并且我可以在eager和lazy之间交替复制此问题。
我认为这与hibernate创建的连接有关,但我在网上找不到确切的答案。
有人可以告诉我为什么eager获取会导致对象重复吗?
谢谢。