Java Hibernate:与继承一起归化

Java Hibernate:与继承一起归化,java,hibernate,inheritance,hibernate-onetomany,natural-key,Java,Hibernate,Inheritance,Hibernate Onetomany,Natural Key,我有以下实体(简短版本): 学生组: @Entity @Table(name = "group_of_students") @Inheritance(strategy = InheritanceType.JOINED) public abstract class AGroupOfStudents extends AModel { } 百年: @Entity @Table(name = "cohort") @PrimaryKeyJoinColumn(name = "id") public cla

我有以下实体(简短版本):

学生组:

@Entity
@Table(name = "group_of_students")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class AGroupOfStudents extends AModel {
}
百年:

@Entity
@Table(name = "cohort")
@PrimaryKeyJoinColumn(name = "id")
public class Cohort extends AGroupOfStudents {

    @Column(nullable = false)
    // @NaturalId <- here is the problem
    private int number;
}

但为什么我只能在根实体上使用@naturaid?如何在不破坏类继承的情况下解决此问题?

好的,我完全误解了
@naturaid
,主要目的是通过表上的NaturalIds启用查询,因此仅对根实体进行操作是有意义的

我想要的是子实体的简单唯一约束,这可以通过以下方式实现:

@Column(unique=true)
用于单个列

@Table(name=“centuria”,uniqueConstraints={@UniqueConstraint(columnNames={“court”、“maniple”、“letter”})
用于多列

@Entity
@Table(name = "centuria")
@PrimaryKeyJoinColumn(name = "id")
public class Centuria extends AGroupOfStudents {

    @Column(nullable = false)
    // @NaturalId <- here is the problem
    private int cohort;


    @Column(nullable = false)
    // @NaturalId <- here is the problem
    private char maniple;
}
AnnotationException: @NaturalId only valid on root entity (or its @MappedSuperclasses)