Bonjour,
J'ai un problème d'insertion avec hibernate. J'ai une entité parent et une entité enfant. Lorsque j'essaie d'ajouter des parents en BDD, j'ai mis l'annotation CascadeType.All sur la collection des enfants qu'il contient afin d'ajouter ceux ci dans leur table respective. Les parents et les enfants sont bien ajoutés mais je me retrouve avec beaucoup de doublons dans la table des enfants.... J'ai par exemple 15 entrées de Etienne Dumont alors que je ne voudrais en avoir q'une.
Entite Parent
Entité enfant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 @Entity @SequenceGenerator(name="PARENT_SEQ", sequenceName="SEQ_PARENT") @Table(name="PARENT") public class Parent extends BusinessObject { @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="PARENT_SEQ") @Column(name="ID_PARENT") private long uid; @Column(name="DESCRIPTION") private String description; @Column(name="NO_CLIENT") private String numeroClient; //association @ManyToOne(cascade=CascadeType.ALL) @JoinColumn(name="ID_ENFANT") private Enfant enfant; }
Code de l'insertion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 @Entity @SequenceGenerator(name="ENFANT_SEQ", sequenceName="SEQ_ENFANT") @Table(name = "ENFANT") public class ENFANT extends BusinessObject { @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="ENFANT_SEQ") @Column(name = "ID_ENFANT") /** * identifiant technique unique */ private long uid; @Column(name = "NOM") private String nom; @Column(name = "PRENOM") private String prenom; @Column(name = "NO") private String numero; @OneToMany(mappedBy="enfant",fetch=FetchType.LAZY) private Set<Parent> parents; }
Comment faire pour éviter que l'ajout des enfants crée des doublons ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 (while ) // Boucle sur tous les parents { parent = new Parent(); Enfant enfant = new Enfant(); enfant.setNumero(...); enfant .setNom(...); enfant .setPrenom(...); parent.Setenfant(enfant); // Ajoute le parent et les enfants en BDD this.updateRef(parent);
Partager