Estoy usando Nimble y Shiro para mis marcos de seguridad y acabo de encontrar una falla GORM. En efecto:GORM createCriteria y la lista no devuelven los mismos resultados: ¿qué puedo hacer?
User.createCriteria().list {
maxResults 10
}
vuelve 10 usuarios mientras User.list(max: 10)
devuelve 9 usuarios!
Después de nuevas investigaciones, descubrí que createCriteria
vuelve dos veces el mismo usuario (admin) porque administrador tiene 2 papeles !!! (No estoy bromeando).
Parece que cualquier usuario con más de 1 función será devuelto dos veces en la llamada createCriteria
y User.list
volverá max-1
casos (es decir, 9 usuarios en lugar de 10 usuarios)
Qué solución puedo utilizar con el fin de ¿Han devuelto 10 usuarios únicos?
Esto es muy molesto porque no tengo forma de usar la paginación correctamente.
Mis clases de dominio son:
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
}
}
¿Cuál es su implementación finalmente? Porque tengo el mismo problema. Muchas gracias –