我需要一些关于创建 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
喜欢:给我所有的节点special
或者:给我所有的节点visible
并且具有未定义的值special
(表中没有条目NodeHasFlag
)
检查单个标志很容易,但同时检查多个标志给我带来了麻烦。
我正在使用 Grails 和 Gorm,但我认为问题与标准 Java Hibernate 相同