J'ai les classes d'entités ci-dessous. Lorsqu'un utilisateur s'enregistre pour la première fois, seuls le nom d'utilisateur et le mot de passe sont fournis, de sorte que la liste des comptes (pensez aux profils) est vide. Plus tard, lorsqu'ils ajoutent un compte, l'objet utilisateur est mis à jour dans le client, transmis au serveur, puis entityManager.merge (utilisateur) est appelé. Lorsque l'utilisateur est fusionné, le compte est ajouté 6 fois à la base de données et l'adresse fournie est ajoutée trois fois. Je ne suis pas sûr pourquoi. Je voudrais que le compte soit ajouté une fois et qu'une seule adresse soit ajoutée. Des idées sur ce qui pourrait se passer?JPA Merge provoque des doublons
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name="user_accounts")
private List<Account> accounts;
//...getters and setters ...
}
@Entity
public class Account implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private long id;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="address")
private Address address;
//...getters and setters...
}
@Entity
public class Address implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="street")
private String street;
@Column(name="city")
private String city;
@Column(name="state")
private String state;
@Column(name="zip")
private String zip;
//...getters and setters...
}
Vous pouvez déposer des trucs comme @Column (name = "id") ou @Column (name = "zip") si vous ne changez pas les noms. – whiskeysierra
le serveur live utilise par défaut tous les noms de colonnes et de colonnes et mon serveur de test est par défaut en minuscules, donc cela semblait plus facile que de changer les paramètres. – chris
Avez-vous trouvé une solution? –