Grails:如何在createCriteria中使用exists / notExists?

时间:2015-06-03 14:46:03

标签: hibernate grails

根据此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') )
   """)
}

我的代码正在使用'不存在'但是存在一个例子'语法会有所帮助。

由于

0 个答案:

没有答案