tengo una clase llamada SynonymMapping que tiene una colección de valores asignada como CollectionOfElementsHibernate CollectionOfElements EAGER fetch elementos duplicados
@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;
}
}
tengo una prueba donde almaceno dos objetos SynonymMapping a la base de datos y luego pedir a la base de datos para devolver todos los objetos SavedMessageing, esperando recibir los dos objetos que almacené.
Cuando cambio el mapeo de valores para estar ansioso (como se muestra en el código por la línea comentada) y vuelvo a ejecutar la prueba, recibo cuatro coincidencias.
He limpiado la base de datos entre ejecuciones y puedo duplicar este problema intercambiando entre impaciente y perezoso.
Creo que tiene que ver con las uniones que hibernate crea debajo pero no puedo encontrar una respuesta definitiva en línea.
¿Alguien puede decirme por qué una búsqueda ansiosa está duplicando los objetos?
Gracias.
Todos los que tengan la excepción "Se encontró más de una fila con el identificador dado" deben tenerlo en cuenta. Realmente ahorra muchas horas sin saber qué demonios está yendo mal. Ver respuesta @ user176668 !! –