Używam Nimble i Shiro dla moich frameworków bezpieczeństwa i właśnie przeszedłem przez błąd GORM. Rzeczywiście:GORM createCriteria i lista nie zwracają takich samych wyników: co mogę zrobić?
User.createCriteria().list {
maxResults 10
}
powraca 10 użytkowników podczas gdy User.list(max: 10)
zwraca 9 użytkowników!
Po dalszych badań, okazało się, że createCriteria
wraca dwa razy ten sam użytkownik (admin) ponieważ administrator ma 2 role !!! (Nie żartuję).
Wydaje się, że każdy użytkownik z więcej niż 1 roli zostaną zwrócone dwa razy w zaproszeniu createCriteria
i User.list
powróci max-1
instancji (czyli 9 użytkowników zamiast 10 użytkowników)
Co obejście można użyć w celu zwróciło 10 unikalnych użytkowników?
Jest to bardzo denerwujące, ponieważ nie mam możliwości prawidłowego używania podziału na strony.
moich klas domen są:
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
}
}
Jakie jest twoje wdrożenie? Ponieważ mam ten sam problem. Wielkie dzięki –