Bonjour ;
je veux mappez cette diagramme avec Hibernate 3:
pour cela j'ai utilisé joined-subclass pour le premier niveau et subclass pour le second niveau et j'ai utilisé une fichier de mappage pour chaque classe ,puisque Hibernate ne supporte pas de mélanger des mappings <subclass> et <joined-subclass> :
Document.hbm.xml:
DocumentSale.hbm.xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <hibernate-mapping> <class name="src.Document" table="DOCUMENT"> <composite-id class="src.IdDocument" name="identifiant"> <key-property column="NUM_DOC" name="numero" /> <key-property column="TYPE_DOC" name="type" /> </composite-id> <discriminator column="TYPE" type="string" /> ........... ........... </class> </hibernate-mapping>
InvoiceSale.hbm.xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <hibernate-mapping> <joined-subclass name="src.DocumentSale" extends="src.Document" table="DOCUMENT_SALE"> <key property-ref="identifiant"> <column name="NUM_DOC"></column> <column name="TYPE_DOC"></column> </key> <property name="ref" column="REF" type="java.lang.String"/> ........... ........... </class> </hibernate-mapping>
et le reste ORDER_SALE ,INVOICE_PURCHASE,ORDRE_PURCHASE sont mappées comme InvoiceSale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <hibernate-mapping> <subclass name="src.InvoiceSale" extends="src.DocumentSale" discriminator-value="INVOICE_SALE"> </subclass> </hibernate-mapping>
maintenant si je veux enregister une Facture ( InvoiceSale) j'ai fait :
et ce qui affiche la console:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 InvoiceSale invoice = new InvoiceSale(); //.... Session session = service.getTheSession(); session .save(invoice );
il insérer deux fois dans la table DOCUMENT_SALE , je ne comprends pas d'où vient le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Hibernate: insert into DOCUMENT (NUM_DOC, TYPE_DOC ,TYPE,HT, TTC) values (?, ?, ?, ?, ?) Hibernate: insert into DOCUMENT_SALE (NUM_DOC, TYPE_DOC ,REF) values (?, ?, ?) Hibernate: insert into DOCUMENT_SALE (NUM_DOC, TYPE_DOC ,) values (?, ?) ...... SEVERE: ORA-00001: violation single constraint ....
alors ma question:
- Est ce que le mappage que j'ai fait pour ce diagramme de classe est correcte?
- y'a t'il un autre moyen pour l'améliorer?
- et pourquoi hibernate enregistre deux fois la facture ce qui posse la violation de constrainte clé primaire?
et merci d'avance pour avoir m'aider.
Partager