Bonjour,
j'ai un soucis dans mon mapping d'objets qui m'empêche d'ajouter ou de supprimer un objet de ma base de données.
Voici mes classes :
La classe mère MonObjetStruct :
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 @Entity @DiscriminatorValue("DOSSIER") public class Dossier extends MonObjetStruct { private List<MonObjetStruct> children; public void setChildren(List<MonObjetStruct> children) { this.children = children; } /** * @return the children */ @OneToMany( targetEntity=StructuredViewingObject.class, cascade={javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.MERGE}, mappedBy="dossier" ) public List<MonObjetStruct> getChildren() { return children; }
Donc en gros, un dossier peut contenir plusieurs MonObjetStruct (donc qui peuvent être aussi des dossiers avec l'héritage), seulement dans ma base de données j'ai bien ma "colonne jointure" qui est créée dans la table MONPROJET_MONOBJETSTRUCT (une seule table, elle est utilisée aussi par Dossier) mais elle est toujours null quand je fais des save et des update.
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 @Entity @Table(name="MONPROJET_MONOBJETSTRUCT") @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn( name="DTYPE", discriminatorType=DiscriminatorType.STRING ) @DiscriminatorValue("STRUCT_OBJET_SPECIFIQUE") public class MonObjetStruct extends CommonEntity { private Dossier dossier; @ManyToOne(targetEntity=MonObjetStruct.class) @JoinColumn(name="dossier_id") public Dossier getDossier() { return dossier; } }
Je fais mes save de cette façon :
En mode Debug je vois bien mon nouveau Dossier ajouté à la liste des dossiers du dossierCible, mais en base je n'ai rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 //get folders Dossier cibleDossier = dossierDao.selectById(cibleDossierId); cibleDossier.getChidren().add(monNouveauDossier); dossierDao.save(cibleDossier); dossierDao.update(cibleDossier);
Si vous aviez une idée d'ou peut venir le problème, merci.
Partager