我正在使用spring-security-acl插件并拥有User&角色定义为多对多关系。我还有一个UserRole域类。
我的数据库中有40个用户。
如果我这样做:
User.list()
我得到了所有40个用户。
但是,如果我做了类似的事情:
User.list(offset: 0, max: 20)
我只有12个用户,当我应该得到20时。max
param的使用会为该域产生非常奇怪的行为。
我无法弄清楚发生了什么。我想这可能与多对多关系有关。
任何帮助都将非常感激。
答案 0 :(得分:1)
我认为,这里的问题是一对多/多对多关联。您的代码正在尝试使用join来获取用户及其角色。这意味着当您尝试获取具有三个角色的用户时,将返回三行而不是一行。 (这是SQL问题,你无能为力)
因此,当您将40作为最大值时,SQL返回40行,但包含重复的行。现在,当Grails将数据转换为对象时,它会删除重复项,从而为您留下12行。
解决方案:从用户中删除对角色的急切提取,并尝试仅提取用户对象.U