JPA属性覆盖

时间:2014-09-18 09:49:24

标签: java jpa eclipselink

我们是否可以覆盖属性以停止在子类中进行版本控制,因为它在super我使用的是eclipse链接。

Class A {
@Version 
int a;
}

Class B extends A
{
//a is used as a normal integer not a version.
}

如果不可能,我们可以覆盖版本字段a在B中是暂时的,并将其从B表中删除。

1 个答案:

答案 0 :(得分:1)

版本似乎被认为是实体的基础,就像ID一样,所以没有办法被子类覆盖。您可以做的是将其标记为在' a'上使用字段锁定。使用@OptimisticLocking注释进行属性并指定selectedColumns: http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_optimisticlocking.htm 这将允许您控制使用的值。在A中,您可以定义一个增加值的preupdate方法,而在B中,您可以覆盖增加它的逻辑。这仍然允许在另一个交易改变价值时发生乐观的锁定例外情况。值,但它使它成为应用程序控制的步骤。