Bonjour à tous,
Je me retrouve actuellement confronté à un problème de mapping hibernate. En base j'ai une relation de type 0,n entre ma table Commande et ma table LigneConteneur. Hors dans mon mapping j'aurais voulu récupérer dans une property une seule ligneConteneur, la plus récente, c-a-d celle qui a l'id le plus grand.
Actuellement le jeu de données que j'ai fait que j'ai maximum 1 ligneConteneur par commande et je passe par un one-to-one dans Commande et un many-to-one unique dans ligneConteneur. Hors je me doute bien que ça risque pas de me renvoyer le dernier, et d'ailleurs je pense que ça plantera quand il y a aura effectivement plusieurs ligneConteneur par commande.
Dois-je essayer de passer par des formula avec des sous-requêtes?
Voici mes mappings:
Commande
ligneConteneur
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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.portail.businessdata.bo.CmdCommande" table="sat_ordr"> <composite-id name="id" class="com.heppner.portail.sove.business.data.bo.CmdCommandeId"> <key-property column="cod_soc" name="codeSoc" type="string" /> <key-property column="cod_eta" name="codeEta" type="string" /> <key-property column="typ_uat" name="typeUat" type="string" /> <key-property column="num_uat" name="numUat" type="string" /> </composite-id> . . . <one-to-one class="com.portail.business.data.bo.CmdLigneConteneur" name="ligneConteneur" property-ref="commande" /> </class> </hibernate-mapping>
Je sèche
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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.portail.business.data.bo.CmdLigneConteneur" table="sat_litc"> <id name="id" type="int"> <column name="cle_lit" /> <generator class="identity" /> </id> <many-to-one name="commande" class="com.portail.business.data.bo.CmdCommande" unique="true" insert="false" update="false"> <column name="cod_soc" /> <column name="cod_eta" /> <column name="typ_uat" /> <column name="num_uat" /> </many-to-one> </class> </hibernate-mapping>Merci d'avance!
Partager