我有一个MappedSuperclass
@MappedSuperclass
public class A{
.
.
.
@Column(name="something")
public getSomething(){..};
public setSomething(){..};
}
我想覆盖子类中的something
@Entity
public class B{
@Override
public getSomething(){..};
}
但是得到Caused by: org.hibernate.MappingException: Duplicate property mapping of data found
异常
我尝试了不同的方法,比如"@AttributeOverride"注释,但没有帮助。
我知道的唯一解决方案是在mappedSuperclass中使something
瞬态。但我不希望它在这里是瞬态的(因为还有另一个子类不想覆盖something
,但希望它是瞬态的(
我想到了两个解决方案:一个是可能将这个SuperClass分解,并使用Emmbeddeds创建您想要的层次结构。如果你想坚持这种方法,我认为你需要使用@AttributeOverride来覆盖子类中的属性和方法:
@Entity
public class B {
@AttributeOverride(name = "fred", column = @Column(name = "FRED"))
private Integer fred;
@Override
public Integer getFred() {return fred;}
}