フィルタ条件に "AnotherEntity"のsuselectを使用して、 "MyEntity"オブジェクトをフィルタリングするために、Hibernateのフィルタを使用したいと思います。マッピングが見つからなかったかのように生成されたSQL文が代わりにマッピングされたテーブル「ANOTHER_TABLE」の「AnotherEntity」が含まれているため、Hibernateフィルタ条件でsubselect HQLを使用するにはどうすればよいですか?
<hibernate-mapping>
<filter-def name="myFilter" condition="someProperty in (select x.property1 from AnotherEntity x where property2 = :property2)">
<filter-param name="property2" type="long"/>
</filter-def>
<class name="com.example.MyEntity" table="SOME_TABLE">
<id name="OID" column="O_ID" type="long">
<generator class="hilo">
<param name="table">oid_id</param>
<param name="column">next_id</param>
</generator>
</id>
<version name="hibernateVersion" column="hibernate_version" unsaved-value="negative"/>
<property name="someProperty"/>
<filter name="myFilter"/>
</class>
<class name="com.example.AnotherEntity" table="ANOTHER_TABLE">
<composite-id>
<key-many-to-one name="property1" ... />
<key-many-to-one name="property2" ... />
</composite-id>
</class>
</hibernate-mapping>
くれorg.hibernate.exception.SQLGrammarException: could not execute query
それぞれのSQLException Table "ANOTHERENTITY" not found
を与える:構成は次のようになります。しかし、サブセレクトだけを実行すると、
select x.property1 from AnotherEntity x where property2 = :property2
のようになります。
私はここで何が欠けていますか?私の設定は間違っていますか?フィルタにSuselect HQLを使用できますか?
私は全く同じ問題があります。あなたは解決策を見つけましたか? – Saffar
回答を作成しました。下記を参照してください。私は、HQLはサポートされていないので、SQLを書く必要があると思います。 –