Grails创建的条件不在列表中

Grails创建的条件不在列表中,grails,Grails,如何获取域B中未使用的列表A 域A Class A{ String name String code } 域B Class B{ A aaa String description } 示例数据: **domain A** id+versioin+name +code+| 1 | 0 |Bobby |bob | 2 | 0 |anto |ant | 3 | 0 |Jessica|jes | 4 | 0 |hera |her |

如何获取域B中未使用的列表A

域A

Class A{
String name
String code
}
域B

Class B{
A aaa
String description
}
示例数据:

**domain A**

id+versioin+name   +code+|
1 | 0      |Bobby  |bob  |
2 | 0      |anto   |ant  |
3 | 0      |Jessica|jes  |
4 | 0      |hera   |her  |

**domain B**    
id+version|a_id|description + |
1 | 0     | 1  |this is bobby |
2 | 0     | 3  |this is jessic|
在B中没有使用的情况下,如何从A中获取列表

i tried this
def b = B.list()
def c = A.createCriteria()
def results = c.list {
    not { 'in'(b) }
}

但是失败。

为了完整性,请注意,在Grails 2.4(处于RC阶段,即将推出GA)中,您可以使用子查询将此查询编写为单个查询,这将更好地执行:

def b = B.list()
def c = A.createCriteria()
def results = c.list {
    not { 'in'("id",b*.aaa.id) }
}
  def c = A.createCriteria()
  def results = c.list {
      notIn new DetachedCriteria(B).id
  }

试试def b=b.list()*。这样做的性能将不如上面在Grails2.4中工作的解决方案,因为您执行的是两个查询而不是一个查询。另外,如果您
aaa
association lazy,您可能会遇到N+1问题。那么解决方案是什么呢?但是我使用的是grails 2.1.1,这仍然是grails 3的首选解决方案吗?还是还有其他更好的解决方案?