我有一个实体:
<class name="name.dargiri.model.Entity" table="ENTITY" optimistic-lock="version">
<version name="version" column="ver" type="long" />
</class
如果实体保存了几次,则在事务结束时,Hibernate将选择对象的版本。为什么? Hibernate在存储对象时会生成此版本,因此它知道它。我发现此方法调用此方法:
EntityVerifyVersionProcess#getCurrentVersion()
Hibernate在日志中生成以下内容:
Hibernate:
/* update
name.dargiri.model.Entity */ update
ENTITY
set
ver=?,
USERNAME=?,
lucky_number=?
where
id=?
and ver=?
Hibernate:
/* get version name.dargiri.model.Entity */ select
ver
from
ENTITY
where
id =?
我使用MySQL和Session#save()。
最佳答案
由于版本号由数据库管理,因此在进行更新后,Hibernate会执行一条额外的SQL语句来检索版本号。有关更多详细信息,建议您查看一下article,这很好地说明了这一点。