比方說,我是在一個循環中創建JPA查詢:由EntityManager返回的JPA查詢對象是否可重用?
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();
}
我可以將返回Query
實例?
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();
}
是否申請的Query
所有實例? NamedQuery
,NativeQuery
等 當然,我說的是同一個EntityManager
內重複使用的情況下,即同一交易
謝謝,你有什麼(例如:規範)來支持?或者是你自己的經驗? –
這只是我的經驗。 – yerlikayaoglu
從JPA 2.1規範的「3.1.1 EntityManager接口」部分:_實體管理器獲得的Query,TypedQuery,StoredProcedureQuery,CriteriaBuilder,Metamodel和EntityTransaction對象在該實體管理器處於打開狀態時有效._ –