Mysql
 sql >> Database >  >> RDS >> Mysql

Problema di ibernazione:l'annotazione @OneToMany restituisce duplicati

Potrebbe essere necessario modificare il metodo in questo modo:

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

Inoltre, cambia gli addresses a un Set :

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

Modifica:

Oh...In EntryAddress hai id definito come @Id ma non è unico. Dovresti creare id la chiave primaria e fai in modo che si incrementi automaticamente come fai in Entry . Quindi crea un altro campo in EntryAddress questa è la chiave esterna per Entry chiamato qualcosa come entry_id .