【发布时间】:2011-04-23 18:12:15
【问题描述】:
我正在使用Nimble 和Shiro 作为我的安全框架,我刚刚遇到了一个GORM 错误。确实:
User.createCriteria().list {
maxResults 10
}
返回 10 个用户,而 User.list(max: 10) 返回 9 个用户!
经过进一步调查,我发现createCriteria 返回两次相同的用户(admin)因为admin有2个角色!!! (我不是在开玩笑)。
在createCriteria 调用中,任何具有超过 1 个角色的用户似乎都将返回两次,User.list 将返回 max-1 实例(即 9 个用户而不是 10 个用户)
我可以使用什么解决方法来返回 10 个唯一用户?
这很烦人,因为我无法正确使用分页。
我的域类是:
class UserBase {
String username
static belongsTo = [Role, Group]
static hasMany = [roles: Role, groups: Group]
static fetchMode = [roles: 'eager', groups: 'eager']
static mapping = {
roles cache: true,
cascade: 'none',
cache usage: 'read-write', include: 'all'
}
}
class User extends UserBase {
static mapping = {cache: 'read-write'}
}
class Role {
static hasMany = [users: UserBase, groups: Group]
static belongsTo = [Group]
static mapping = { cache usage: 'read-write', include: 'all'
users cache: true
groups cache: true
}
}
【问题讨论】:
-
你最终的实现是什么?因为我也有同样的问题。非常感谢
标签: grails grails-orm shiro nimble