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