3

我有一个 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”注释,但没有帮助。

我知道的唯一解决方案是something在 mappedSuperclass 中制作 Transient。但我不希望它在这里是瞬态的(因为还有另一个子类不想覆盖something但希望它是瞬态的)

4

1 回答 1

3

我想到了两个解决方案:一个是可能打破这个 SuperClass 并使用 Emmbeddeds 来创建你想要的层次结构。但是,如果您想坚持使用这种方法,我认为您需要在子类中使用@AttributeOverride来覆盖属性和方法,如下所示:

@Entity
public class B {

    @AttributeOverride(name = "fred", column = @Column(name = "FRED"))
    private Integer fred;

    @Override
    public Integer getFred() {return fred;}
}
于 2013-02-26T15:15:35.210 回答