ClassA.list(max:xx) não funciona corretamente quando ClasseA contém static mapping fetch:'join'

Updated . Posted . Visible to the public.

O gorm apresenta o seguinte problema: Quando temos uma classe que possui uma coleção de outra classe, e que esta coleção está mapeada como fetch:join, o método list não irá funcionar corretamente quando recebe o parâmetro max.

O erro que pode ocorrer é o retorno de menos elementos do que está especificado no parâmetro max. Exemplo: Seu banco tem 50 objetos, mas o list(max:10) só retorna 5 objetos.

Para resolver isso substitua o static mapping fetch:'join' por static mapping lazy:false

Exemplo do caso em que ocorreu:

 class Papel {

      static hasMany = [people: Usuario]

      static mapping = {
           people (fetch: 'join')
      }

 }

Classe adaptada para não gerar o erro:

 class Papel {

      static hasMany = [people: Usuario]

      static mapping = {
           people (lazy: false)
      }

 }
Fred Policarpo
Last edit
Tags
Posted by Fred Policarpo to ZeroGlosa (2012-07-31 14:48)