我有這樣Java Hibernate爲什麼namedQuery上的executeUpdate首先執行全表更新?
@org.hibernate.annotations.NamedQuery(name="namedQuery",query="update entity set .... where id=:id"
簡單NamedQuery我有這樣
public void updateField(final Entity entity){
final Session session = currentSession();
final org.hibernate.Query query= session.getNamedQuery("namedQuery")
...loadParameters();
query.executeUpdate();
return;
}
的方法這始終工作好了,但有時在這行代碼
query.executeUpdate();
有時我看到在控制檯中選擇一個實體,如實體的完整更新。我不明白爲什麼會發生這種情況。如果我真的想更新一個簡單的字段,爲什麼Hibernate會更新我所有的字段?發生這種情況時,namedQuery的唯一更新似乎沒用,因爲我認爲之前已更新過。
事情是這樣的我看到這在控制檯
Hibernate:
/* update
com.models.Entity */ update
entity
set
BUNCH OF FIELDS
where
ID=?
,後來我明白我真正想要的唯一字段更新
update
Entity
set
SINGLE_FIELD_UPDATE
where
ID=?
正如我提到的,完全更新有時有時會出現不要有時全程更新出現兩次更新namedQuery
正在執行!
這是爲什麼?爲什麼在執行namedQuery
的實際字段之前,Hibernate會啓動完整更新並進行兩次完全更新?
我錯過了什麼?
你試過用'@ org.hibernate.annotations.Entity( \t \t dynamicUpdate =真 )'註釋類類? – Apostolos
它的作品..發表您的評論標記爲已解決 – chiperortiz
張貼我的答案與文檔的官方鏈接。很高興我幫助! – Apostolos