私はエンティティを持っています:
<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() を使用しています。