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

私には2つの解決策があります。1つは、このSuperClassを分割し、Embeddedsを使用して必要な階層を作成することです。ただし、このアプローチを使い続けたい場合は、サブクラスで次のようなプロパティとメソッドの両方を使用してオーバーライドする必要があると思います。

@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 に答える