sql >> Databáze >  >> RDS >> Mysql

Problém hibernace:Anotace @OneToMany vrací duplikáty

Možná budete muset upravit svou metodu takto:

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

Změňte také addresses do Set :

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

Upravit:

Oh...V EntryAddress máte id definované jako @Id ale není to ojedinělé. Měli byste vytvořit id primární klíč a nechte jej automaticky zvýšit jako v Entry . Poté vytvořte další pole v EntryAddress to je cizí klíč pro Entry nazvaný něco jako entry_id .




  1. Hledání řádků, které neobsahují číselná data v Oracle

  2. Odeslání pole hodnot na dotaz SQL v ruby?

  3. Upozornění:Navazování SSL připojení bez ověření identity serveru nedoporučujeme

  4. MySQL:V klauzuli FROM nemůžete určit cílovou tabulku pro aktualizaci