我需要一些建议来创建一个hql查询。查询与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和格姆,但我认为这个问题将与标准的Java休眠
问题是HQL不支持相交或联合。你可以做每个HQL语句,然后交叉列表。 – 2013-05-01 13:11:51