根据这个jira票证(在HibernateCriteriaBuilder中支持 Subqueries.exists ()等)),已将存在/ notExists准则方法添加到HibernateCriteriaBuilder中.我正在寻找使用此功能的帮助,因为我找不到任何文档.
'exists'方法似乎将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]
}
Run Code Online (Sandbox Code Playgroud)
我的目标是找到Foo的:
a)没有关联的Bar
或者
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', …Run Code Online (Sandbox Code Playgroud)