Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Hibernate-Problem:Die @OneToMany-Anmerkung gibt Duplikate zurück

Möglicherweise müssen Sie Ihre Methode wie folgt ändern:

@SuppressWarnings("unchecked")
@Transactional
public Collection<Entry> findEntries() {
    return sessionFactory.getCurrentSession()
      .createCriteria(Entry.class)
      .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
      .list();
}

Ändern Sie auch addresses zu einem Set :

@OneToMany(fetch=FetchType.EAGER)
@JoinColumn(name = "id")
private Set<EntryAddress> addresses;

Bearbeiten:

Oh...In EntryAddress Sie haben id definiert als @Id aber es ist nicht einzigartig. Sie sollten id erstellen den Primärschlüssel und lassen Sie ihn automatisch inkrementieren, wie Sie es in Entry tun . Erstellen Sie dann ein weiteres Feld in EntryAddress das ist der Fremdschlüssel zu Entry so etwas wie entry_id genannt .