Hello,
J'ai un mapping avec une clé composée, dont certains éléments pointent vers d'autres tables.
Côté DAO, je souhaite requéter via Criteria, mais les jointures qui fonctionnent sur les mapping classique, sans clé composée, ne marchent plus ici ; la jointure ne se fait pas.
1 2 3 4 5 6 7 8 9 10 11
| <class name="com.xxx.CimValue"
table="TOTO"
dynamic-update="true">
<composite-id name="id" class="com.xxx.CimValuePK">
<key-many-to-one name="cim" column="ID_CIM" class="com.xxx.Cim"/>
<key-many-to-one name="refset" column="ID_SET" class="com.xxx.CommonSet"/>
<key-many-to-one name="source" column="ID_SOURCE" class="com.xxx.RateSourceCmn"/>
<key-property name="economicalDate" column="ECO_DATE" type="java.util.Date" />
<key-property name="deletionDatetime" column="DELETION_DATETIME" type="java.util.Date"/>
</composite-id> |
1 2 3 4 5 6 7
| Criteria criteria = getSession().createCriteria(CimValue.class)
.createAlias("id.refset", "refset", Criteria.INNER_JOIN)
.add(Restrictions.eq("id.economicalDate",ecoDate))
.add(Restrictions.eq("refset.id", refset))
;
List<CimValue> result = criteria.list();
return result; |
Le problème intervient à l'exécution où j'obtiens une exception
ORA-00904: "REFSET1_"."ID": invalid identifier
L'origine étant la requête générée par hibernate, qui n'a pas fait de jointure avec la table de l'object REFSET :
1 2 3 4 5 6 7 8 9
| select this_.ID_CIM as ID1_18_0_,
this_.ID_SET as ID2_18_0_,
this_.ECO_DATE as ECO4_18_0_,
this_.DELETION_DATETIME as DELETION5_18_0_,
this_.ID_CHARAC as ID6_18_0_,
[...]
from TOTO this_
where refset1_.ID=?
and this_.ECO_DATE=? |
J'ai testé, retesté, re-vérifié, rien n'y fait. Est-ce que quelqu'un voit le problème et surtout sa raison ?
Partager