【发布时间】:2013-05-01 12:38:31
【问题描述】:
我需要一些关于创建 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 相同
【问题讨论】:
-
问题是 HQL 不支持相交或联合。您可以执行每个 HQL 语句,然后与列表相交。
标签: sql hibernate grails hql grails-orm