Tengo una entidad (Autor) y una acción de controlador que representa a todos los autores.Comportamiento de GORM extraño en grises al actualizar la página (F5)
def index = {
def list = Author.list()
render(view: 'index', model: ['allauthors' : list])
}
Al renderizar la página, se ejecuta una sola consulta como se esperaba:
Hibernate:
select
this_.id as id0_0_,
this_.version as version0_0_,
this_.name as name0_0_
from
author this_
Sin embargo, cuando pulso Actualizar (F5) a continuación, una instrucción de selección se ejecuta para cada autor (en este caso tengo 3 autores):
Hibernate:
select
author0_.id as id0_0_,
author0_.version as version0_0_,
author0_.name as name0_0_
from
author author0_
where
author0_.id=?
Hibernate:
select
author0_.id as id0_0_,
author0_.version as version0_0_,
author0_.name as name0_0_
from
author author0_
where
author0_.id=?
Hibernate:
select
author0_.id as id0_0_,
author0_.version as version0_0_,
author0_.name as name0_0_
from
author author0_
where
author0_.id=?
¿Por qué esto sucede ???
Podría ser debido a que su segundo caché de nivel está desactivada por defecto. Si prevé que la función de actualización suceda mucho, puede almacenar en caché la consulta de lista pasando el parámetro de caché en la llamada a la lista(). –
lo curioso es por qué la sentencia: Author.book() ejecuta la instrucción de selección única normal por primera vez, pero al actualizarla ejecuta múltiples instrucciones de selección para cada autor. ¿Algunas ideas? – geo
Agregué la etiqueta de hibernación porque creo que esto se podría explicar mejor en el nivel de hibernación y no en el nivel de Grails. –