小编tyl*_*wal的帖子

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

根据这个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)

grails hibernate

6
推荐指数
0
解决办法
722
查看次数

标签 统计

grails ×1

hibernate ×1