У меня есть класс под названием 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, ожидая получить два объекта, которые я сохранил.
Когда я изменяю сопоставление значений, которые будут нетерпеливыми (как показано в коде по пропущенной строке), и повторите тест, я получаю четыре совпадения.
Я очистил базу данных между запусками, и я могу дублировать эту проблему, заменяя между нетерпением и ленивым.
Я думаю, что это связано с объединениями, создаваемыми под гибернацией, но я не могу найти определенный ответ в Интернете.
Может ли кто-нибудь сказать мне, почему горячая выборка дублирует объекты?
Спасибо.