3

複合キーを作成する必要があります。キーの 1 つの属性は、変更できない MappedSuperClass にあります。キーの他の属性は、エンティティ クラスである派生クラスにあります。ただし、以下を実行すると、基本クラスの属性 (@IdClass にも存在する) がエンティティ クラス (派生クラス) の属性ではないという実行時エラーが発生します。この状況に対処する方法を教えてください。

@MappedSuperClass
public abstract class Base
{
    @Id
    protected String id;
}

@Entity
@Idclass(DerivedPK.class)
public Derived extends Base
{
    @Id
    protected float version;
}

public class DerivedPK
{
    private String id;
    private float version;
}

DerivedPK に存在する属性「id」がクラス「Derived」に見つからないというエラーが表示されます。使用される Hibernate のバージョンは 4.1.1.Final です。

4

1 に答える 1