给定社交网络中的个人资料:
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 存储在朋友集合中,并在 ProfileService.getProfileById() 方法中手动加载关联。这工作正常,但我更喜欢尽可能使用 GORM。现在我根本无法将 GORM 用于可能循环的此类课程。有没有办法教mongodb插件延迟加载?我已经尝试将 fetchMode 设置为惰性,但它只是没有工作....有什么想法吗?