sql >> Databasteknik >  >> RDS >> Mysql

Vilolägesproblem:@OneToMany-anteckning returnerar dubbletter

Du kan behöva ändra din metod så här:

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

Ändra även addresses till en Set :

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

Redigera:

Åh...i EntryAddress du har id definieras som @Id men det är inte unikt. Du bör skapa id primärnyckeln och låt den öka automatiskt som du gör i Entry . Skapa sedan ett annat fält i EntryAddress det är den främmande nyckeln till Entry kallas något som entry_id .




  1. Använder where in i spring-jdbc

  2. Hur får man namnet på den ändrade tabellen i en Postgres-händelseutlösare?

  3. Varför skulle Magento misslyckas med att rädda en kund efter att ha genererat ett ID?

  4. SET GLOBAL max_allowed_packet fungerar inte