ソーシャル ネットワークのプロファイルが与えられた場合:
Class Profile {
String name
List<Profile> friends
static hasMany = [friends:Profile]
}
プロファイル A がプロファイル B と友達であり、その逆を想像してみてください。
a.addToFriends(b)
b.addToFriends(a)
次のようなプロファイルをロードするとき
def p = Profile.get(id)
すべてのアソシエーションが任意の深さまでロードされるため、このサイクルによりスタック オーバーフローが発生します。mongodb プラグインは、悪意のある読み込みサイクルを防ぐ遅延読み込みをサポートしていないようです。私の魂は、低レベルの gmongo API を使用し、ObjectID を friends コレクションに保存し、関連付けを ProfileService.getProfileById() メソッドで手動でロードすることです。これは問題なく動作していますが、可能な限り GORM を使用することをお勧めします。今では、可能なサイクルを持つそのようなクラスには GORM をまったく使用できません。mongodb プラグインの遅延読み込みを教える方法はありますか? すでに fetchMode を lazy に設定しようとしましたが、うまくいきませんでした....何かアイデアはありますか?