我有域类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中查询嵌入对象的任何其他方式?
如果你这样做你会得到什么(假设 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)
| 归档时间: |
|
| 查看次数: |
2416 次 |
| 最近记录: |