Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Problema de hibernação:a anotação @OneToMany retorna duplicatas


Você pode precisar modificar seu método assim:
@SuppressWarnings("unchecked")
@Transactional
public Collection<Entry> findEntries() {
    return sessionFactory.getCurrentSession()
      .createCriteria(Entry.class)
      .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
      .list();
}

Além disso, altere addresses para um Set :
@OneToMany(fetch=FetchType.EAGER)
@JoinColumn(name = "id")
private Set<EntryAddress> addresses;

Editar:

Ah...Em EntryAddress você tem id definido como o @Id mas não é único. Você deve fazer id a chave primária e faça com que ela seja incrementada automaticamente como você faz em Entry . Em seguida, crie outro campo em EntryAddress essa é a chave estrangeira para Entry chamado algo como entry_id .