ho una classe denominata SynonymMapping che ha una collezione di valori mappati come CollectionOfElementsHibernate CollectionOfElements EAGER fetch duplicati elementi
@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;
}
}
Ho un test in cui devo conservare due oggetti SynonymMapping al database e poi chiedere il database per restituire tutti gli oggetti di SynonymMapping salvati, aspettandosi di ricevere i due oggetti che ho archiviato.
Quando cambio la mappatura dei valori per essere desiderosa (come mostrato nel codice dalla riga commentata) ed eseguo di nuovo il test, ricevo quattro corrispondenze.
Ho eliminato il database tra le esecuzioni e posso duplicare questo problema scambiando tra desideroso e pigro.
Penso che abbia a che fare con i join che l'ibernazione crea sotto ma non riesco a trovare una risposta definitiva online.
Qualcuno può dirmi perché un recupero folle sta duplicando gli oggetti?
Grazie.
Ogni persona con l'eccezione "Più di una riga con l'identificatore specificato è stata trovata" deve essere informata di ciò. Risparmia davvero molte ore senza sapere che diavolo sta andando male. Vedi @ user176668 risposta !! –