根据此jira票证(Support for Subqueries.exists() etc. in HibernateCriteriaBuilder)),已将存在/ notExists准则方法添加到HibernateCriteriaBuilder。我正在寻找使用此功能的帮助,因为我无法找到任何文档。
'存在'方法似乎将QueryableCriteria对象作为参数,但我不熟悉此类,也无法找到任何有用的文档。
我的简化课程结构:
class Foo {
static hasMany = [fooBars: FooBar]
}
class FooBar {
static belongsTo = [Foo, Bar]
Foo foo
Bar bar
}
class Bar {
String division
static hasMany = [fooBars: FooBar]
}
我的目标是找到Foo,或者:
a)没有相关的酒吧
或
b)关联的Bar分区位于指定的字符串列表中(或不在指定字符串列表中)
现在我正在使用sqlRestriction并且它正常工作,但我更喜欢使用HibernateCriteriaBuilder方法:
def crit = Foo.createCriteria()
def results = crit.list() {
sqlRestriction(""" not exists (
select 1
from
Foo_Bar fb
inner join Bar b
on Foo_Bar.bar_id = b.id
where
fb.foo_id = this_.id
and b.DIVISION in ('bad', 'terrible') )
""")
}
我的代码正在使用'不存在'但是存在一个例子'语法会有所帮助。
由于