休眠集合元素 EAGER 获取重复元素
2022-09-01 01:15:42
我有一个名为DistinyMapping的类,它有一个值的集合,映射为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;
}
}
我有一个测试,我将两个 SynonymMappping 对象存储到数据库中,然后要求数据库返回所有保存的 SynonymMapping 对象,期望接收我存储的两个对象。
当我将值的映射更改为 eager (如代码中注释掉的行所示)并再次运行测试时,我会收到四个匹配项。
我已经在运行之间清除了数据库,并且可以在急切和懒惰之间重复这个问题。
我认为这与休眠在下面创建的连接有关,但我无法在网上找到明确的答案。
谁能告诉我为什么一个热切的获取是复制对象?
谢谢。