如何覆盖@MappedSuperclass子层中的参数



我有一个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;}
}

相关内容

  • 没有找到相关文章

最新更新