我想创建一个主组合键
并使用父类中的@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) {
//...
}
}
结果:在实体ChildEntity中找不到@IdClass的属性:id
最佳答案
我发现了一个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();
}
}
关于java - 如何从映射的父类(super class)继承@Id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34158098/