我有一个简单的更新查询,只是为了检查更新查询是否有效:
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,因此发生了一些事情,但肯定不会更新查询。
有什么想法发生了什么?
答案 0 :(得分:1)
您应该使用@Transactional注释,以便编译器知道事务正在操纵数据库,从而允许执行数据操作查询,或者它只是将其作为数据定义语言查询执行。 请查看下面的代码段,例如
@Transactional
public Employee editEmployee(Employee employee) { //employee is the data you got through post
return entityManager.merge(e1);
}
此外,最佳做法是始终实现数据访问对象接口及其实现,并在实现中定义您的查询。 我希望这会有所帮助。