如何扩展一个实体与另一个实体,但它们都指向同一个表?可能吗 ?该结构是这样的:JPA:实体与实体的扩展
@Entity
@Table(name = "users")
@NamedQuery(name="User.findAll", query="SELECT u FROM User u")
public class User implements Serializable{
private int id;
private String name;
}
@Entity
@Table(name = "users")
@NamedQuery(name="SubUser.findAll", query="SELECT su FROM SubUser su")
public class SubUser extends User {
@Override
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId() {
return super.getId();
}
//- Other fields and getter setter
}
我试过这样Extend JPA entity to add attributes and logic
,但我得到这个例外
org.hibernate.mapping.SingleTableSubclass cannot be cast to org.hibernate.mapping.RootClass
更新1
我已经把@Id
为SubUser,因为@Entity
显示此例外
The entity has no primary key attribute defined
ID必须在基础机构指定,并且它不是在你的榜样。只有当它是MappedSuperclass时,才可以从基类中省略Id。继承定义用于继承关系中的类的表,而不仅仅指定表! –