我有一个映射父类(super class)
@MappedSuperclass
public class A{
.
.
.
@Column(name="something")
public getSomething(){..};
public setSomething(){..};
}
我想覆盖子类中的东西
@Entity
public class B{
@Override
public getSomething(){..};
}
但得到 Caused by: org.hibernate.MappingException: Duplicate property mapping of data found
异常
我尝试了不同的东西,比如“@AttributeOverride”注释,但没有用。
我知道的唯一解决方案是在 mappedSuperclass 中使 something
transient 。但我不希望它在这里是 transient 的(因为还有另一个子类不想覆盖 something
但希望它是 transient 的)
最佳答案
我想到了两个解决方案:一个是可能将这个 SuperClass 分解并使用 Embeddeds 来创建您想要的层次结构。如果你想坚持使用这种方法,我认为你需要使用 @AttributeOverride 覆盖子类中的属性和方法都是这样的:
@Entity
public class B {
@AttributeOverride(name = "fred", column = @Column(name = "FRED"))
private Integer fred;
@Override
public Integer getFred() {return fred;}
}
关于java - 如何覆盖@MappedSuperclass 的子类中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15092204/