У меня есть отображение 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 (которое установлено) находилось в другой коллекции.
Что-то вроде:
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