Bonjour
Un problème qui pourrait ête simple mais étant débutant, je rame !
quel mapping pour une table de ce style ?
idA foreign-key de table A de type int peut être null
idB foreign-key de table B de type int peut être null
idC foreign-key de table C de type int
pas d'autres propriétés dans la table, 1 seul discrimant possible = (idA, idB, idC)
ma classe Approver.java (Getter et setter pour chaque propriété)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <hibernate-mapping> <class name="Approver" table="APPROVER"> <composite-id> <key-many-to-one name="businessArea" class="BusinessArea" column="AP_BA_ID" lazy="false"></key-many-to-one> <key-many-to-one name="docType" class="DocType" column="AP_DT_ID" lazy="false"></key-many-to-one> <key-many-to-one name="approver" class="AlternateApprover" column="AP_ALTERNATEAPPROVER_ID" lazy="false"></key-many-to-one> </composite-id> </class> </hibernate-mapping>
je lis l'objet de cette facon en passant un objet app de type Approver en testant la nullité de la zone et en adaptant le code ci-dessous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class Approver implements Serializable { private BusinessArea businessArea; private DocType docType; private AlternateApprover approver; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 if (app.getDocType() == null ) { Criteria criteria = getSession().createCriteria(Approver.class).add( Restrictions.eq("businessArea", app.getBusinessArea())).add( Restrictions.isNull("docType")); Approver result = (Approver) criteria.uniqueResult(); }
j'ai essayé avec des id (de type java.lang.Long) plutôt qu'avec des objets (dans la classe java, mapping...) mais rien n'y fait :A partir du moment ou j'accède à une ligne avec une clé à null, je ne récupère rien dans result. En traçant la requête, elle est correcte, et en la testant dans un editeur SQL,elle retourne bien la ligne voulue.
Une idée ? Merci d'avance pour tout aide
Partager