GORM createCriteria und die Liste nicht wieder die gleichen Ergebnisse : was kann ich tun?

Ich bin mit Flink und Shiro für meine security-frameworks und ich bin gekommen, nur über einen GORM bug. In der Tat :

User.createCriteria().list { 
   maxResults 10 
} 

gibt 10 Benutzer in der Erwägung, dass User.list(max: 10) gibt 9 Benutzer !

Nach weiteren Untersuchungen fand ich heraus, dass createCriteria gibt zweimal die gleiche Benutzer (admin) weil admin hat 2 Rollen!!! (Ich bin kein Scherz).

Scheint es, dass jeder user mit mehr als 1 Rolle zurückgegeben werden zweimal in der createCriteria anrufen und User.list zurück max-1 Instanzen (ich.e 9 Benutzer statt 10 user)

Was workaround kann ich verwenden, um bis zu 10 einzigartige Benutzer zurückgegeben ?

Dies ist sehr ärgerlich, denn ich habe keine Möglichkeit, den Seitenumbruch korrekt.


Meine domain Klassen sind:

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 
  } 
} 
  • Was ist Ihre Umsetzung schließlich ? Weil ich habe das gleiche problem. Vielen Dank
InformationsquelleAutor fabien7474 | 2010-10-11
Schreibe einen Kommentar