J'ai un Parent entité avec un enfant entité dans un ManyToOne relation:Comment éviter les doublons avec les cascades JPA?
@Entity class Parent {
// ...
@ManyToOne((cascade = {CascadeType.ALL})
private Child child;
// ...
}
Le enfant a un champ unique:
@Entity class Child {
// ...
@Column(unique = true)
private String name;
// ...
}
Quand je besoin d'un nouveau Enfant, je demande le ChildDAO fir st:
Child child = childDao.findByName(name);
if(child == null) {
child = new Child(name);
}
Parent parent = new Parent();
parent.setChild(child);
Le problème est, si je fais comme ci-dessus deux fois (avec le même nom pour le enfant), et ne persistent que le Parent à la fin, je reçois une exception contrainte. Ce qui semble normal, car il n'y avait initialement aucun enfant dans la base de données avec le nom spécifié. Le problème est, je ne suis pas sûr de ce qui serait le meilleur moyen d'éviter cette situation.
Etes-vous sûr que votre modèle est bon? L'enfant peut avoir plusieurs parents, et le parent ne peut avoir qu'un seul enfant? –
Ma réponse suppose une relation OneToOne - le commentaire ci-dessus est absolument correct, c'est un nom bizarre s'il est correct. –
Oui, le modèle est correct. J'ai renommé les entités pour l'exemple, et il semble que j'aurais pu faire mieux. – Cos64