2017-10-19 155 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