Powiedzmy, że jestem w pętli tworzenia kwerend WZP:Czy obiekty zapytania JPA są zwracane przez wielokrotnego użytku EntityManager?
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();
}
Czy mogę używać wracającą Query
instancji?
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();
}
Czy to dotyczy wszystkich przypadków Query
? NamedQuery
, NativeQuery
itp Oczywiście, mówię o ponowne wystąpienie w tej samej EntityManager
, czyli w ramach tej samej transakcji
Dzięki, masz coś (np. Spec), aby to potwierdzić? A może to twoje własne doświadczenie? –
To tylko moje doświadczenie. – yerlikayaoglu
Ze specyfikacji JPA 2.1, sekcja "3.1.1 Interfejs EntityManager": Obiekty zapytania, TypedQuery, StoredProcedureQuery, CriteriaBuilder, Metamodel i EntityTransaction uzyskane od menedżera encji są ważne, gdy ten menedżer encji jest otwarty. –