6

次のように、ドメインクラス A と B があります。

class A {
    String prop1
    String prop2
    B prop3

    static embedded = ['prop3']
}

class B {
    String prop4
    String prop5
}

このようにクエリしたいとき:

def q = A.where { prop3.prop4 == 'bla' }
def list = q.list()

次の例外が発生します。

Cannot get property 'javaClass' on null object. Stacktrace follows:

「def q = A.where ...」行。

何が問題なのか手がかりはありますか?私はこれをチェックしました:

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

しかし、「それらを直接呼び出す」方法は私にはよくわかりません。GORM に埋め込まれたオブジェクトをクエリする他の方法はありますか?

4

2 に答える 2

0

すると何が得られますか (B が にあると仮定src/groovy)

def q = A.where { prop3 == new B(prop4: 'bla') }
def list = q.list()

埋め込みコンポーネントは、メイン ドメイン クラス (所有者) 自体の内部に永続化されます。ドメインオブジェクトに直接アクセスする場合と同様に、任意の動的ファインダーを使用して直接アクセスできます。

上記は、動的ファインダーで次のように表すこともできます。

A.findAllByProp3(new B(prop4: 'bla'))
于 2013-08-14T15:20:41.557 に答える