ここに初めて、Grailsを初めて使用した場合、1対多の関係で奇妙な問題が発生します。Grails:parent id nullオブジェクトがリストされているオブジェクトがnullの場合
私はGrailsアプリケーションを作成して、Webサイトやスマートフォンアプリケーションにサービスを提供しています。
私は、より具体的なサービスを継承できる汎用のアクション(作成、取得、変更、リスト、削除など)を処理できる親サービスを作るために最善を尽くしました。
私が直面している問題は、リストアクションです。呼び出し側が私に送るパラメータからwithCriteriaリクエストを作成します。
私は2つのドメインがあります:私は必要なもの
class A {
static hasMany = [bs:B]
}
class B {
static belongsTo = [a:A]
}
がオブジェクトに属するクラスBのオブジェクトを一覧表示することで、私のジェネリックリストアクションはこれを生成します。
List objects = B.withCriteria() {
createAlias("A","A")
eq("A.id", myId)
}
すべてが正常に動作しますが、まず、ドメインインスタンスからJSONレスポンスを生成する汎用のtoJSON()メソッドを作成しました。そのためには、JSONレスポンスに追加するドメインプロパティの名前を含むStringリストを繰り返し処理します。そして、私はこのようにそれらにアクセス:私のオブジェクトが他のオブジェクトへの参照が含まれている場合は
objects[0]."$propertyName"
、私はJSONレスポンスでそれらのIDを追加します。
objects[0].aId
しかしこいつはnullです:
これらのIDは、この構文を使用してアクセスすることができます!アクセスした場合:
objects[0].a.id
私は正しい親のIDを持っています!
すなわち、私はいくつかのテストをしたと私はオブジェクトによってBのオブジェクトをフィルタリングしていない場合、私は親IDに私はそれをやりたい方法でアクセスすることができます
List objects = B.withCriteria() {}
objects[0].aId
何の任意のアイデアをここにいる?
ありがとうございます。
は、あなたの答えをありがとうしかし、私は単純なを書きたいです実際、私のドメインは既にこのように構成されています。 – Allan
これを反映するようにメッセージを編集します。 – Allan
あなたはすでにAオブジェクトを持っていますか?もしそうなら、あなたはdef bs = B.findAllByA(aInstance)のようなことをすることができます。なぜ私はこのための基準を使用する必要があるか分かりません。 – Gregg