java - 扩展实体类的非实体类

标签 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 可以用作外键,从地址表中获取地址。

有时我想返回一个派对本身,有时我想返回一个带有地址的派对。我想我可以创建一个单独的类来扩展 party 但添加地址,如下所示:

public class partyWithAddress extends party{

    @OneToMany
    private List<Address> addresses;
}

但是我收到错误:

Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: partyWithAddress

我读过有关实体继承的内容,但我仍然很迷失。有人可以帮忙吗?

最佳答案

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

关于java - 扩展实体类的非实体类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45515065/

相关文章:

java - 如何为 MongoDbMessageStore.MessageReadingMongoConverter 设置 mapKeyDotReplacement

java - 如何使用 Java2D 在 GUI 中使用 ActionListener 调用方法

java - 使用 JPA 时 persistence.xml 中的属性标签

java - @JoinColumn 注解在 Hibernate 中是强制的吗?

java - 如何创建多对多连接,其中所有者实体可以拥有多个拥有的实体?

mysql - JPA 在同一事务中插入父实体和子实体

java - 关于类型转换、静态和实例的泛型查询

java - 输出中的第一行

java - 聚合函数 MAX 和 AVG 不适用于 Hibernate HQL 中的 DATEDIFF

java - JPA 查询返回 Object[] 而不是所需的实体