@Entity(name="users")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) // одна таблица на всех, но стоит посмотреть и другие варианты, например JOINED
@DiscriminatorColumn(name="user_role", discriminatorType = DiscriminatorType.INTEGER)
public class CommonUser {
// ... здесь поле user_role не нужно описывать, опираться придется на класс
}
@Entity
@DiscriminatorValue("1")
public class Admin extends CommonUser {
// ... уже здесь, в конечном классе, использовать @ManyToMany
}
@Entity
@DiscriminatorValue("2")
public class User extends CommonUser {
// ... уже здесь, в конечном классе, использовать @OneToMany
}
Hibernate 支持不同类型的继承。从任务的描述来看, discriminator 的值
是最好的。 你需要一个共同的祖先 Admin 和 User 类,并且字段将是它们的鉴别器
role总体而言,该结构将如下所示:
Hibernate 会处理剩下的事情:当从基类读取时,根据鉴别器字段的值,它将创建所需最终类的实例,当写入基类时,它会正确保存它。