2017-10-19 96 views
0

工作,我有一個簡單的更新查詢只是爲了檢查是否更新查詢工作:無法獲得更新查詢與Hibernate

this.openDBTransaction(); 
Query updateQuery = session.createQuery(
     "UPDATE User AS usr SET usr.failedLogins=666 WHERE usr.id='USER_3000'" 
); 

int result = updateQuery.executeUpdate(); 
this.closeDBTransaction(); 

但不知何故DB不與期望的值更新。 result作爲1來發生,但肯定不會更新查詢。

任何線索是怎麼回事?

回答

1

您應該使用@Transactional註釋,以便編譯器知道事務正在操作數據庫,從而允許執行數據操作查詢,或者將其作爲數據定義語言查詢來執行。 看看下面的代碼片段,例如,

@Transactional 
public Employee editEmployee(Employee employee) { //employee is the data you got through post 
    return entityManager.merge(e1); 

} 

而且,最好的做法是始終貫徹數據訪問對象接口及其實施和執行定義的查詢。 我希望這可以幫助。

+0

我已經實現了DEO並設置在@ Transactionl,但簡單的只是'UPDATE'查詢沒有工作。 – JackTheKnife

+1

你嘗試過使用this.commit()嗎? 請關注,https://www.tutorialspoint.com/hibernate/hibernate_examples.htm –

+0

是的。那就是訣竅 – JackTheKnife