如何加载和更新实体以增加Hibernate @Version属性?

时间:2013-04-06 12:56:25

标签: java hibernate

我想更新我的实体的@Version属性而不更改实体。该实体具有另一个实体的子集合。我想用@Version属性更新基本实体,以在Hibernate控件下获取该实体版本的新值。我有类似的东西(attribute不是@Version注释的属性):

MyEntity entity = (MyEntity) getSession().load(Entity.class, id);
entity.setAttribute(new String(entity.getAttribute()));
getSession().update(entity);

但这不起作用。只有在我为其中一个属性设置新值时,entiy才有新版本值。如何在没有任何更改的情况下加载和更新实体以增加Hibernate @Version属性?

1 个答案:

答案 0 :(得分:1)

事实上,您应该通过使用LockMode.FORCE对您的实体进行锁定来增加版本:

Session session = getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
MyEntity u = (MyEntity) session.get(MyEntity.class, id);
session.lock(u, LockMode.FORCE);
tx.commit();
session.close();