属性 (Map< MyClass, Integer >) として Map を持つ Java クラス (BigClass と呼びましょう) があります。このマップの値に応じてこのクラスをフィルター処理する HQL クエリを作成したいと考えています。
実際、私がやりたいことは、MyClass b.map.get(m) > 0 の特定のインスタンス (m) を満たす BigClass のすべてのインスタンス (b) を回復することです。
例: マップに < m, 2 > のようなエントリがある場合は BigClass のインスタンスを復元したいが、マップに < m, 0 > のようなエントリがある場合は BigClass のインスタンスを復元したくないまたは m がマップ キーに属していない場合。
私は検索してきましたが、私の問題に関連するこの投稿を見つけました:
しかし、それは私に解決策を与えませんでした。
これらは、私が試してきたいくつかのクエリです。
org.hibernate.QueryException: No index value!
[SELECT e FROM BigClass e WHERE ( map[(SELECT b FROM MyClass b WHERE b.id = ?)] > 0) ]
org.hibernate.QueryException: No index value!
[SELECT e FROM BigClass e WHERE ( index(map) = (SELECT b FROM MyClass b WHERE b.id = ?) ) > 0) ]
前もって感謝します...