如何覆盖子类中列的功能?

时间:2018-11-29 06:54:52

标签: java hibernate optimistic-locking

在我们的应用程序中,有一个实体类具有带有@Version批注的属性(私有长版),并且有很多类 扩展此实体。我们实现了版本控制以处理乐观锁定。 但是在那些子类之一中,我们不需要该功能。 所以我的问题是如何覆盖子类中的功能?

代码:

Employee.java:

@MappedSuperclass
class Employee {

@Id
@Column(name = "EMP_ID")
private int id;

@Column(name = "EMP_NAME")
private String name;

@Version
@Column(name = "VERSION")
private long version

//setters and getters 

}

PermEmployee.java:

@Entity
@Table(name = "PERM_EMP")
class PermEmployee extends Employee {

@Column(name = "SAL")
private long salary;

//setters and getters 

}

当前,PERM_EMP表还具有VERSION列,并且每次我们不希望对PERM_EMP表进行更新时,其列就会递增。 请帮助我解决此问题。

1 个答案:

答案 0 :(得分:0)

尝试attributeOverride:

@AttributeOverride(name = "version", column = @Column(name = "perm_version", insertable = false, updatable = false)
public class PermEmployee extends Employee{
}

此处有更多信息:https://docs.jboss.org/hibernate/jpa/2.1/api/javax/persistence/AttributeOverride.html