hql クエリを作成するためのアドバイスが必要です。
状況:Nodes
の設定可能な量を に割り当てることができるのセットがありますFlags
。これを行うには、次のクラス/テーブルがあります。
クラス:
class Node {
String name
}
class Flag {
String name
}
class NodeHasFlag {
Node node
Flag flag
boolean value
}
いくつかのサンプル データを含む結果のテーブル:
Node
id, name
1, 'a'
2, 'b'
3, 'c'
...
Flag
id, name
1, 'visible'
2, 'special'
...
NodeHasFlag
node_id, flag_id, value
1, 1, true // node 'a' is visible
2, 1, false // node 'b' is not visible
2, 2, true // node 'b' is special
3, 1, false // node 'c' is not visible
...
フラグに基づいてノードのリストを取得するには、hql クエリが必要です。
visible
Like:およびであるすべてのノードを教えてくださいspecial
visible
または:未定義の値を持つすべてのノードを教えてください(テーブルspecial
にエントリがありません)NodeHasFlag
単一のフラグをチェックするのは簡単ですが、複数のフラグを同時にチェックすると問題が発生します。
私はGrailsとGormを使用していますが、問題は標準のJava Hibernateでも同じだと思います