我有一个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
Transient。但我不希望它在这里是暂时的(因为有另一个子类不想覆盖something
但希望它是瞬态的)
答案 0 :(得分:3)
我遇到两个解决方案:一个是打破这个SuperClass并使用Emmbeddeds创建你想要的层次结构。如果你想坚持使用这种方法,我认为你需要在子类中使用@AttributeOverride覆盖属性和类似方法:
@Entity
public class B {
@AttributeOverride(name = "fred", column = @Column(name = "FRED"))
private Integer fred;
@Override
public Integer getFred() {return fred;}
}