Bonjour
Un problème qui pourrait ête simple
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)
Code:
<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>
ma classe Approver.java (Getter et setter pour chaque propriété)
Code:
public class Approver implements Serializable {
private BusinessArea businessArea;
private DocType docType;
private AlternateApprover approver;
}
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:
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