日期:2014-05-17  浏览次数:20802 次

hibernate乐观锁version不能更新?
最近做项目发现一个现象,更新数据库时如果使用HQL直接更新数据库,乐观锁的version不能自动更新啊。请看下面代码:

使用HQL更新:Version字段并不更新加1
Session s = sessionFactory.getCurrentSession();
Query query = s.createQuery("Update User u set u.password =:password where u.name =:name");
query.setString("name", name).setString("password", password);
int result = query.executeUpdate();

使用pojo更新:Version字段更新加1
Session s = sessionFactory.getCurrentSession();
Query query = s.createQuery("from User u where u.name ='"+name+"'");
User user = (User) query.uniqueResult();
user.setPassword(password);

请问这个是什么原因呢?如果这个现象确实存在,那是不是只要用了乐观锁就不能用HQL更新数据库?我个人非常喜欢用HQL去更新数据库啊?

------解决方案--------------------
第一种不行的,没有被hibernate管理,hibernate三种状态符合才行