0

给定社交网络中的个人资料:

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 设置为惰性,但它只是没有工作....有什么想法吗?

4

1 回答 1

0

据我所知,Grails 至少有 2 个 MongoDB Gorm 插件。如果你使用的是基于 morphia 的,惰性引用可以通过@Reference(lazy=true).

于 2013-01-04T02:37:28.937 回答