我将Nimble和Shiro用于我的安全框架,我刚刚遇到了一个 GORM 错误。确实 :
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
}
}