Mysql
 sql >> база данни >  >> RDS >> Mysql

Проблем с хибернация:анотацията @OneToMany връща дубликати

Може да се наложи да промените метода си така:

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

Освен това променете addresses към Set :

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

Редактиране:

О... В EntryAddress имате id дефиниран като @Id но не е уникален. Трябва да направите id първичния ключ и го накарайте да се увеличава автоматично, както правите в Entry . След това създайте друго поле в EntryAddress това е външният ключ за Entry наречен нещо като entry_id .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django:Небуферирана mysql заявка

  2. Изчислете процентил от актуалност в MySQL

  3. Избиране на честотата на резултат, който може да се появи в множество колони (SQL)

  4. Промяна на десетичния разделител в MySQL

  5. Изисква ли се `definer` при създаване на съхранена процедура?