我有一个派对类映射到一个表,并使用@entity进行注释,如下所示:
@entity
@Table(name = "PARTY")
public class party{
@Id
protected long partyId;
}
我还有一个代表地址的类:
@entity
@Table(name = "ADDRESS")
public class address{
@Id
protected long partyId;
}
派对ID可以用作外键从地址表中获取地址。
有时候我想自己回归派对,有时候我想要回复一个有地址的派对。我以为我可以创建一个扩展派对的单独类,但在地址中添加如下:
public class partyWithAddress extends party{
@OneToMany
private List<Address> addresses;
}
但是我收到了一个错误:
调用init方法失败;嵌套异常是java.lang.IllegalArgumentException:不是托管类型:partyWithAddress
我读到了关于实体继承但我仍然很丢失。有人可以帮忙吗?
答案 0 :(得分:1)
如果您的类不是实体,那么它不会被JPA识别,您需要首先使用@Entity进行注释,然后使用您想要使用的继承策略,默认情况下使用单一的继承,这意味着所有子项和他们的父级在一个表中,如果您的实体之间没有太大差异,建议这样做,有关继承的更多信息,请检查此link
答案 1 :(得分:0)
我强烈建议在这里避免继承,只需添加
@OneToMany
List<Address> addresses;
到Party
实体,并在代码中处理Addresses
列表为空/空的情况。