如何从映射的超类继承@Id?

时间:2015-12-08 14:13:34

标签: java hibernate

我想创建一个primary composite key并使用父类中的@Id字段。但它不起作用。为什么呢?

@MappedSuperclass
static abstract class SuperEntity {
    @Id
    private Long id;
}

@Entity
@IdClass(SuperPK.class)
public static class ChildEntity extends SuperEntity {
    @Id
    private String lang;
}


public class SuperPK {
    public SuperPK(Long id, String lang) {
        //...
    }
}

结果:Property of @IdClass not found in entity ChildEntity: id

1 个答案:

答案 0 :(得分:1)

我找到了关于此错误的open issue

其中一条评论指出要覆盖ID属性的getter作为解决方法。

@Entity
@IdClass(SuperPK.class)
public static class ChildEntity extends SuperEntity {
    @Id
    private String lang;

    @Override @Id
    public Long getId() {
        return super.getId();
    }
}