Digamos que estoy en un bucle de creación de consultas de JPA:¿Son los objetos de consulta de JPA devueltos por un EntityManager reutilizable?
for(A elem : collection) {
emanager.createQuery("update A a set a.x=:y where a.id=:id")
.setParameter("id",elem.id)
.setParameter(":y", 123)
.executeUpdate();
}
¿Puedo volver a utilizar el vuelto Query
ejemplo?
Query query = emanager.createQuery("update A a set a.x=:y where a.id=:id");
for(A elem : collection) {
query
.setParameter("id",elem.id)
.setParameter(":y", 123)
.executeUpdate();
}
¿Se aplica para todas las instancias de Query
? NamedQuery
, NativeQuery
, etc Por supuesto, estoy hablando de la reutilización de una instancia dentro de la misma EntityManager
, es decir, dentro de la misma transacción
Gracias, ¿tiene algo (por ejemplo: especificaciones) para respaldar esto? ¿O es tu propia experiencia? –
Es solo mi experiencia. – yerlikayaoglu
De la especificación JPA 2.1, sección "3.1.1 Interfaz EntityManager": _ Los objetos Query, TypedQuery, StoredProcedureQuery, CriteriaBuilder, Metamodel y EntityTransaction obtenidos de un administrador de entidades son válidos mientras ese administrador de entidades está abierto._ –