版本(version)

<version>元素是可选的,表明表中包含附带版本信息的数据。 这在你准备使用 长事务(long transactions)的时候特别有用

<version
        column="version_column"
        name="propertyName"
        type="typename"
        access="field|property|ClassName"
        unsaved-value="null|negative|undefined"
        generated="never|always"
        insert="true|false"
        node="element-name|@attribute-name|element/@attribute|."
/>
1

column (可选 - 默认为属性名): 指定持有版本号的字段名。

2

name: 持久化类的属性名。

3

type (可选 - 默认是 integer): 版本号的类型。

4

access (可选 - 默认是 property): Hibernate用于访问属性值的策略。

5

unsaved-value (可选 - 默认是undefined): 用于标明某个实例时刚刚被实例化的(尚未保存)版本属性值,依靠这个值就可以把这种情况 和已经在先前的session中保存或装载的脱管(detached)实例区分开来。 (undefined指明应被使用的标识属性值。)

6

generated (可选 - 默认是 never): 表明此版本属性值是否实际上是由数据库生成的。请参阅第 5.6 节 “数据库生成属性(Generated Properties)”部分的讨论。

7

insert (可选 - 默认是 true): 表明此版本列应该包含在SQL插入语句中。只有当数据库字段有默认值0的时候,才可以设置为false

版本号必须是以下类型:long, integer, short, timestamp或者calendar

一个脱管(detached)实例的version或timestamp属性不能为空(null),因为Hibernate不管 unsaved-value被指定为何种策略,它将任何属性为空的version或timestamp 实例看作为瞬时(transient)实例。 避免Hibernate中的传递重附(transitive reattachment)问题的一个简单方法是 定义一个不能为空的version或timestamp属性,特别是在人们使用程序分配的标识符(assigned identifiers) 或复合主键时非常有用! 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值