sql >> Database >  >> RDS >> Mysql

Slaapstandprobleem:@OneToMany annotatie retourneert duplicaten

Mogelijk moet u uw methode als volgt wijzigen:

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

Wijzig ook addresses naar een Set :

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

Bewerken:

Oh...In EntryAddress je hebt id gedefinieerd als de @Id maar het is niet uniek. U moet id . maken de primaire sleutel en laat deze automatisch toenemen zoals u doet in Entry . Maak vervolgens een ander veld in EntryAddress dat is de refererende sleutel voor Entry zoiets als entry_id . genoemd .




  1. hoe BigInteger-waarden op te slaan in de Oracle-database

  2. Hoe UUID() werkt in MariaDB

  3. tinyint (maat), varchar (maat):uitleg over de maat

  4. Lijst met talen die door Oracle Database worden ondersteund