sql >> Base de Datos >  >> RDS >> Mysql

Problema de Hibernate:la anotación @OneToMany devuelve duplicados

Es posible que deba modificar su método de esta manera:

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

Además, cambia addresses a un Set :

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

Editar:

Oh... En EntryAddress tienes id definido como @Id pero no es único. Deberías hacer id la clave principal y hacer que se incremente automáticamente como lo hace en Entry . Luego crea otro campo en EntryAddress esa es la clave foránea de Entry llamado algo como entry_id .