Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA中是否有隐式版本字段?_Jpa_Eclipselink_Objectdb - Fatal编程技术网

JPA中是否有隐式版本字段?

JPA中是否有隐式版本字段?,jpa,eclipselink,objectdb,Jpa,Eclipselink,Objectdb,我是JPA新手,注意到可以通过使用@Version注释实体中的字段来使用乐观锁定。我只是好奇,如果以前不存在隐式版本字段,持久性提供者是否会创建隐式版本字段。例如,国家网站: 使用ObjectDB时,默认情况下会启用乐观锁定,并且是完全自动的 但这似乎是特定于供应商的行为,因为例如在EclipseLink中,默认情况下不会启用乐观锁定。所以,如果我想使用锁定(是的,我想:-),我是否需要为我的所有实体创建一个额外的属性?说明书中有什么提示吗 提前谢谢你 是的,JPA@Version注释允许您定义

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

使用ObjectDB时,默认情况下会启用乐观锁定,并且是完全自动的

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


提前谢谢你

是的,JPA
@Version
注释允许您定义一个Version属性,我假设ObjectDB在默认情况下只是创建了一个this属性

您自己的属性可以是整数、长或短(或其基本等价物),也可以是java.sql.Timestamp


据我所知,大多数JPA提供商只有在显式使用
@Version
注释的情况下才会进行乐观锁定。

我担心这一点。我实际上想要实现的是在任意查询中锁定所有实体,但不假设实体模型的状态,也不知道实际的持久性提供者。乐观锁定实际上不会“锁定”记录,如果你想要一个真正的锁,你需要考虑悲观锁。我认为如果你想要可移植性,在long类型的属性上使用
@Version
是安全的。我理解,但假设我不知道实体模型,但我想设置锁(更多的是在库的上下文中,而不是在我自己的应用程序中)然后可以使用悲观锁定(通过EntityManager显式锁定记录)。