GORM在嵌入对象上查询

Iva*_*ric 6 grails grails-orm

我有域类A和B如下:

class A {
    String prop1
    String prop2
    B prop3

    static embedded = ['prop3']
}

class B {
    String prop4
    String prop5
}
Run Code Online (Sandbox Code Playgroud)

当我想这样查询时:

def q = A.where { prop3.prop4 == 'bla' }
def list = q.list()
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

Cannot get property 'javaClass' on null object. Stacktrace follows:
Run Code Online (Sandbox Code Playgroud)

在"def q = A.where ..."行.

有什么问题是什么问题?我检查过这个:

http://grails.1312388.n4.nabble.com/GORM-embedded-object-issue-td1379137.html

但是如何"直接打电话给他们"对我来说并不十分清楚.在GORM中查询嵌入对象的任何其他方式?

dma*_*tro 0

如果你这样做你会得到什么(假设 B 位于src/groovy

def q = A.where { prop3 == new B(prop4: 'bla') }
def list = q.list()
Run Code Online (Sandbox Code Playgroud)

嵌入式组件保留在主域类(所有者)本身内部。可以使用任何动态查找器直接访问它,就像直接访问域对象一样。

上述内容也可以在动态查找器中表示为:

A.findAllByProp3(new B(prop4: 'bla'))
Run Code Online (Sandbox Code Playgroud)