我有一个实体:

<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,这很好地说明了这一点。

09-30 14:38
查看更多