1

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

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

但这不起作用。仅当我为其属性之一设置新值时,实体才具有新版本值。在这种情况下,如何加载和更新实体以增加 Hibernate @Version 属性而不进行任何更改?

4

1 回答 1

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();
于 2013-04-06T22:03:05.743 回答