bonjour,
j'ai fait un peu le tour des différents post sur ce forum mais aucune d'elle n'a pu résoudre ce problème d'insertion null dans une foreign key.
Mes tables
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Enfant ( NUM_CHRONO varchar(20) primary key, Parent_id number foreign key(Parent(parent_id) not null) ) Parent(parent_id number primary key)
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 @Entity @Table (name = "TABLE_ENFANT") public class Enfant implements Serializable { private static final long serialVersionUID = 1L; private String mNumChrono; private Parent mParent; @Id @Column(name = "NUM_CHRONO", unique = true, nullable = false, precision = ConstantesTables.COL_LENGHT_VINGT_DEUX, scale = 0) public String getNumChrono() { return mNumChrono; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "PARENT_ID", nullable = true, insertable = false, updatable = false) public Parent getParent() { return mParent; } }Mais bizarre, cela m'enregistre un null dans la table enfant dans la colonne parent_id je teste
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 @Entity @Table(name = "TABLE_PARENT") public class Parent implements java.io.Serializable { private static final long serialVersionUID = 1L; private Integer mId; private List<Enfant> mListeEnfant; @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "my_entity_seq_gen") @SequenceGenerator(name = "my_entity_seq_gen", sequenceName = "SEQ_PARENT") @Column(name = "PARENT_ID", unique = true, nullable = false, precision = ConstantesTables.COL_LENGHT_VINGT_DEUX, scale = 0) public Integer getId() { return mId; } @OneToMany(mappedBy = "parent") @JoinColumn(name = "NUM_CHRONO", nullable = false) public List<Enfant> getListeEnfant() { return mListeEnfant; } }
Peut etre que je manque de recul mais je ne comprends pas pourquoi ca me met a null alors que je renseigne bien l'id de l'enfant avant de l'affecter au parent.
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 public void testSave() { Parent vPoste = new Parent(); vParent.setId(1310); Enfant vEnfant = new Enfant(); vEnfant .setNumChrono("A1111112"); vEnfant .setParent(vParent); List<Enfant> vListeEnfant = new ArrayList<Enfant>(); vListeEnfant .add(vEnfant); vPoste.setListeAvoir(vListeAvoir); try { mMananger.ajoutEnfant(vEnfant); } catch (FtnExceptionTechnique vEx) { fail(vEx.getMessage()); vEx.printStackTrace(); } }
Merci à vous
Partager