JPA中是否存在隐式版本字段?

时间:2012-12-03 23:36:39

标签: jpa eclipselink objectdb

我是JPA的新手并注意到可以通过使用@Version注释实体中的字段来利用乐观锁定。我只是好奇持久性提供程序是否会创建一个隐式版本字段,如果之前不存在。例如objectdb的网站:

  

“使用ObjectDB时,默认情况下启用乐观锁定并且全自动。”

但这似乎是特定于供应商的行为,因为例如,EclipseLink中默认不会启用乐观锁定。所以,如果我想使用锁定(是的,我想要:-)),我是否需要为我的所有实体创建一个额外的属性?规范中是否有任何提示?

提前谢谢!

1 个答案:

答案 0 :(得分:3)

是的,JPA @Version注释允许您定义版本属性,我假设ObjectDB默认只创建一个这个属性。

您自己的属性可以是Integer,Long或Short(或它们的原始等价物),也可以是java.sql.Timestamp。

如果您明确使用@Version注释,我知道的大多数JPA提供程序只会执行乐观锁定。