una tiempo significado salir quitar que modo laptop hibernar hibernando hibernación dura desactivar cuanto computadora computacion como hibernate

hibernate - tiempo - cuenta(*) en los criterios de hibernación?



pc hibernando como desactivar (2)

Tengo una combinación de criterios de búsqueda que se implementó mediante el uso de criterios de hibernación. Y agregué una paginación como esta:

criteria.setFirstResult(offset).setMaxResults(pageSize).setFetchSize(pageSize).list();

Esto no es suficiente para una paginación, así que he contado el tamaño total del resultado.

totalResult = (Integer)criteria.setProjection(Projections.rowCount()).uniqueResult();

El problema es que la primera vez que envío el formulario de búsqueda obtuve el totalResult correcto. Cuando hago clic en la página siguiente y el desplazamiento cambia, obtengo una NullPointExcetion en la segunda declaración. No sé por qué. Y a través de la depuración, puedo ver cuándo se produce esta excepción, la primera declaración devuelve con éxito los resultados paginados.

Entonces quiero preguntar, ¿la primera declaración entra en conflicto con la segunda? (porque la primera declaración establece el fetchize en 10, y me pregunto si la función count (*) funcionará correctamente. Son tareas diferentes con los mismos criterios, ¿Cómo puedo clonar o copiar un criterio que ya tiene numerosas restricciones agregadas?)


Creo que el conflicto es en realidad la restricción en la consulta de recuento, por lo que espero que arroje resultados incorrectos en la segunda ejecución de la consulta de paginación.

El uso de un criterio único para ambos requiere un reinicio entre usos, lo que probablemente se puede hacer de la siguiente manera:

criteria.setProjection(null) .setResultTransformer(Criteria.ROOT_ENTITY);

Si realmente desea dos criterios separados pero idénticos, creo que la manera más fácil es crear primero un Criterio Independiente, que sea Serializable, y usar el hack de clonación de serialización-deserialización para hacer otro, antes de convertirlos a Criterios normales adjuntando a una sesión .

Pero si puede trabajar en un restablecimiento, es posible que no necesite dos.


Solo para corregir la consulta de recuento (*): mejor use este código para los criterios:

Integer totalResult = ((Number)criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();

de lo contrario, obtendrá un error java.lang.Long cannot be cast to java.lang.Integer