Grails-在域列表()方法中使用max param时的奇怪行为
我正在使用SpringSecurityACL插件,并将用户和角色定义为多对多关系。我还有一个UserRole域类 我的数据库中有40个用户 如果我这样做:Grails-在域列表()方法中使用max param时的奇怪行为,grails,gorm,Grails,Gorm,我正在使用SpringSecurityACL插件,并将用户和角色定义为多对多关系。我还有一个UserRole域类 我的数据库中有40个用户 如果我这样做: User.list() 我有40个用户 但如果我做了以下事情: User.list(offset: 0, max: 20) 我只有12个用户,而我应该有20个。使用maxparam会对该域产生非常奇怪的行为 我不知道发生了什么事。我想这可能和多对多的关系有关 我想,这里的问题是一对多/多对多关联。您的代码正在尝试使用join获取用户及其角
User.list()
我有40个用户
但如果我做了以下事情:
User.list(offset: 0, max: 20)
我只有12个用户,而我应该有20个。使用max
param会对该域产生非常奇怪的行为
我不知道发生了什么事。我想这可能和多对多的关系有关
我想,这里的问题是一对多/多对多关联。您的代码正在尝试使用join获取用户及其角色。这意味着当您尝试获取具有三个角色的用户时,将返回三行,而不是一行。(这是SQL问题,您对此无能为力) 因此,当您将40作为最大值时,SQL返回了40行,但其中包含重复的行。现在,当Grails将数据转换为对象时,它会删除重复的数据,从而留下12行
解决方案:从用户中删除角色的即时抓取,并尝试只抓取用户对象。我想,这里的问题是一对多/多对多关联。您的代码正在尝试使用join获取用户及其角色。这意味着当您尝试获取具有三个角色的用户时,将返回三行,而不是一行。(这是SQL问题,您对此无能为力) 因此,当您将40作为最大值时,SQL返回了40行,但其中包含重复的行。现在,当Grails将数据转换为对象时,它会删除重复的数据,从而留下12行
解决方案:从用户中删除角色的即时获取,并尝试仅获取用户对象。U请告知有关配置的更多信息。Grails版本?后端数据库名称和版本?DataSource.groovy内容?请记住,使用max-the-list方法不会返回简单的列表,而是返回PagedResultList。尝试执行User.list(偏移量:0,最大值:20).getTotalCount()和User.list(偏移量:0,最大值:20).size(),并告诉我们结果Hi Fabiano,非常感谢您的回复。我正在使用Grails2.0.3和MySQL 5.6
User.list(偏移量:0,最大值:20)。getTotalCount()
返回40,而User.list(偏移量:0,最大值:20)。size()
返回12。请告诉有关配置的更多信息。Grails版本?后端数据库名称和版本?DataSource.groovy内容?请记住,使用max-the-list方法不会返回简单的列表,而是返回PagedResultList。尝试执行User.list(偏移量:0,最大值:20).getTotalCount()和User.list(偏移量:0,最大值:20).size(),并告诉我们结果Hi Fabiano,非常感谢您的回复。我正在使用Grails2.0.3和MySQL 5.6User.list(偏移量:0,最大值:20)。getTotalCount()返回40,而User.list(偏移量:0,最大值:20)。size()返回12。非常感谢,ahispj!是的,就是这样。我在我的用户映射中使用了角色获取:'join'
。现在我用的是lazy:false
。非常感谢,ahispj!是的,就是这样。我在我的用户映射中使用了角色获取:'join'
。现在我使用的是lazy:false
。