Problème d'insertion "null" dans une relation many to one
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:
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:
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;
}
} |
Code:
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;
}
} |
Mais bizarre, cela m'enregistre un null dans la table enfant dans la colonne parent_id je teste
Code:
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();
}
} |
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.
Merci à vous