我为我的安全框架使用了Nimble和Shiro,并且我刚刚遇到了一个GORM错误。事实上:GORM createCriteria和list不会返回相同的结果:我该怎么办?
User.createCriteria().list {
maxResults 10
}
回报10个用户而User.list(max: 10)
返回9用户!
经过进一步调查,我发现createCriteria
返回两次相同的用户(管理员),因为管理员有2个角色! (我不是在开玩笑)。
看来,有超过1个角色的所有用户将在createCriteria
调用返回两次,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
}
}
最后是你的实现?因为我有同样的问题。非常感谢 – 2011-03-09 09:21:21