扩展实体类的非实体类

时间:2017-08-04 20:33:58

标签: java hibernate jpa spring-data-jpa

我有一个派对类映射到一个表,并使用@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

我读到了关于实体继承但我仍然很丢失。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

如果您的类不是实体,那么它不会被JPA识别,您需要首先使用@Entity进行注释,然后使用您想要使用的继承策略,默认情况下使用单一的继承,这意味着所有子项和他们的父级在一个表中,如果您的实体之间没有太大差异,建议这样做,有关继承的更多信息,请检查此link

答案 1 :(得分:0)

我强烈建议在这里避免继承,只需添加

@OneToMany 
List<Address> addresses;

Party实体,并在代码中处理Addresses列表为空/空的情况。