0

我在 jpa 中实现继承时遇到问题。我有以下实体:

@Entity 
@Inheritance(strategy=InheritanceType.JOINED)
public class Person implements Serializable{
private String name;
private String }

@Entity 
@Inheritance(strategy=InheritanceType.JOINED)    
public class User extends Person {
private String salary;}

public class chef extends User{}

我希望所有实体都是具体的,这是正确的还是我应该改变一些东西?

4

1 回答 1

0

看起来您的用户条目可以独立于 Chef 表条目。Java 继承不允许您切换对象以使其成为不同的类 - 对象是用户或厨师。JPA Joined 继承遵循 Java 继承规则,因此 Chef 表中的行与 User 表行绑定,因为它们是单个实体。

因此,如果您有一个 User 实体,则不能将其设为 Chef 实体。听起来您需要的是可以分配角色的用户,例如厨师。一种方法是映射您在评论中提到的类型字段 - 但它不会让您访问 Chef 表数据 - 您仍然不能使用它来切换实例以成为 Chef。如果您需要数据,您可以创建 User 和 Chef 独立实体,并让 User 具有 1:1 映射,比如角色,可以为该角色分配一个包含相关数据和业务规则的 Chef 实体。

于 2013-05-30T13:02:28.377 回答