Siéntete en la libertad de divulgar nuestro espacio y códigos con tus amigos, ayúdanos a ampliar esta comunidad.
Solución:
Si ahí javax.persistencia.consulta.tiempo de espera. De acuerdo con la especificación JPA 2.0, el soporte para esta sugerencia de consulta es opcional:
Las aplicaciones portátiles no deben confiar en esta sugerencia. Según el proveedor de persistencia y la base de datos en uso, la sugerencia puede o no cumplirse.
El valor predeterminado (en milisegundos) se puede establecer en persistence.xml para todas las consultas:
También se puede dar la misma propiedad al crear EntityManagerFactory a través de Persistence.createEntityManagerFactory.
También se puede anular/establecer por consulta:
query.setHint("javax.persistence.query.timeout", 2000);
La misma funcionalidad se puede obtener a través de attribute sugerencias en NamedQuery.
Hay dos formas de configurar el período de tiempo de espera de la consulta con Hibernate.
La forma específica de Hibernate
Si está arrancando Hibernate de forma nativa o si está desenvolviendo el JPA java.persistence.Query
a su org.hibernate.query.Query
equivalente, entonces puedes usar el setTimeout
método:
List posts = entityManager
.createQuery(
"select p " +
"from Post p " +
"where lower(p.title) like lower(:titlePattern)", Post.class)
.setParameter("titlePattern", "%Hibernate%")
.unwrap(org.hibernate.query.Query.class)
.setTimeout(1)
.getResultList();
Note que el
setTimeout
método toma unint
argumento que especifica el valor de tiempo de espera en segundos.
La forma de sugerencia de consulta JPA
También puede usar una sugerencia de consulta JPA, como se ilustra en el siguiente ejemplo:
List posts = entityManager
.createQuery(
"select p " +
"from Post p " +
"where lower(p.title) like lower(:titlePattern)", Post.class)
.setParameter("titlePattern", "%Hibernate%")
.setHint("javax.persistence.query.timeout", 50)
.getResultList();
Note que el
javax.persistence.query.timeout
la sugerencia de consulta toma el valor de tiempo de espera en milisegundos.
La forma de sugerencia de consulta de Hibernate
También puede utilizar el org.hibernate.timeout
sugerencia de consulta:
List posts = entityManager
.createQuery(
"select p " +
"from Post p " +
"where lower(p.title) like lower(:titlePattern)", Post.class)
.setParameter("titlePattern", "%Hibernate%")
.setHint("org.hibernate.timeout", 1)
.getResultList();
Note que el
org.hibernate.timeout
la sugerencia de consulta toma el valor de tiempo de espera en segundos.
No se te olvide comunicar esta división si te fue útil.