У меня есть отображение гибернации, который выглядит примерно так:Hibernate Критерии содержит в об ассоциации к столу
<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
Учитывая это, как я запрос таким образом, что значение MyEntity.scalarSet (который Set) находится в другой коллекции.
Что-то вроде:
criteria.add(Restrictions.in("scalarSet", targetList));
[править] Я также попытался Restriction.sqlRestriction (..). Запрос SQL, который я использовал что-то вроде этого:
"1 == (select fk, scalar_value from other_table where fk = {alias}.id and scalar_value in ({expanding?})"
В чем {?} Расширение 'заменяется разделенных запятыми вопросительных знаков (в зависимости от targetList.size()).
Но я просто получаю
Вызванный: org.hibernate.MappingException: коллекция не была ассоциация: MyEntity.scalarSet
Спасибо, после взлома с источником спящего режима, это то, что я закончил делать :-) –