次のような 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?})"
'{expanding?}' はカンマ区切りの疑問符に置き換えられます (targetList.size() によって異なります)。
しかし、私はちょうど得ています
原因: org.hibernate.MappingException: コレクションは関連付けではありませんでした: MyEntity.scalarSet