J'ai un mapping Hibernate qui ressemble à ceci:critères Hibernate contient-in sur une association à une table
<class name="MyEntity">
<set name="scalarSet" table="(select fk, scalar_value from other_table)">
<key column="fk"/>
<property column="scalar_value" type="long"/>
</set>
</class
Compte tenu de cela, comment puis-je demander de telles qu'une valeur de MyEntity.scalarSet (qui est Set) est dans une autre collection.
Quelque chose comme:
criteria.add(Restrictions.in("scalarSet", targetList));
[modifier] J'ai aussi essayé Restriction.sqlRestriction (..). La requête SQL que j'ai utilisé est quelque chose comme ceci:
"1 == (select fk, scalar_value from other_table where fk = {alias}.id and scalar_value in ({expanding?})"
En quoi « {?} Expansion » est remplacée par des points d'interrogation séparées par des virgules (selon targetList.size()).
Mais je suis juste un
Causée par: org.hibernate.MappingException: collection n'a pas été une association: MyEntity.scalarSet
Merci, après avoir piraté la source de Hibernate, voici ce que j'ai fini par faire :-) –