Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails-在域列表()方法中使用max param时的奇怪行为_Grails_Gorm - Fatal编程技术网

Grails-在域列表()方法中使用max param时的奇怪行为

Grails-在域列表()方法中使用max param时的奇怪行为,grails,gorm,Grails,Gorm,我正在使用SpringSecurityACL插件,并将用户和角色定义为多对多关系。我还有一个UserRole域类 我的数据库中有40个用户 如果我这样做: User.list() 我有40个用户 但如果我做了以下事情: User.list(offset: 0, max: 20) 我只有12个用户,而我应该有20个。使用maxparam会对该域产生非常奇怪的行为 我不知道发生了什么事。我想这可能和多对多的关系有关 我想,这里的问题是一对多/多对多关联。您的代码正在尝试使用join获取用户及其角

我正在使用SpringSecurityACL插件,并将用户和角色定义为多对多关系。我还有一个UserRole域类

我的数据库中有40个用户

如果我这样做:

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.6
User.list(偏移量:0,最大值:20)。getTotalCount()返回40,而
User.list(偏移量:0,最大值:20)。size()返回12。非常感谢,ahispj!是的,就是这样。我在我的
用户
映射中使用了
角色获取:'join'
。现在我用的是
lazy:false
。非常感谢,ahispj!是的,就是这样。我在我的
用户
映射中使用了
角色获取:'join'
。现在我使用的是
lazy:false