当前位置: 首页 > 知识库问答 >
问题:

JPA实体映射继承

曹泉
2023-03-14

我在JPA实体映射方面有问题。我有一些课:

A级

@Entity
public class ClassA {

private int id;

@OneToMany
private List<ClassB> listClassB;
}

类别b

@Entity
public class ClassB {

private int id;

@ManyToOne
private ClassA classA;

@OneToMany
private List<ClassC> listClassC;
}

Classc

@Entity
public class ClassC {

private int id;

@ManyToOne
private ClassB classB;

    private String code;
    private String name;

@OneToMany
private List<ClassD> listClassD;
}
@Entity
public class ClassD {
    private int id;
    private Long value;
    private Date startDate;
    private Date finishDate;

@ManyToOne
    private ClassC classC;
}
@Entity
public Class ClassE extends ClassC {

    // All ClassC properties

    private Long numberOfClassD;
}

*如何解决这个问题?*我还能使用类继承吗?还是另一个解决这个的方法?

谢了。

共有1个答案

郭博涉
2023-03-14

在本例中,ClassC和ClassE都用@Entity标记,因此使用了“每个类的表层次结构”继承策略。默认情况下,鉴别器列名为'DTYPE'。

您可以在“ClassC”上使用“每个类的表”层次结构策略来尝试一下。然而,生成的表将与“每个类层次结构的表”大不相同。

您可能希望根据域模型检查需要哪种继承策略。以下链接将是很好的指南:http://docs.jboss.org/hibernate/orm/4.2/manual/en-us/html/ch10.html

 类似资料:
  • 快速总结我想要实现的目标。请给出实施或设计建议:) 我有两个表:用户,图像。在UserDO中,我希望保留一组所有用户的图像,以及单个图像,即用户的肖像(在我的示例中,该组将包括肖像): 在ImageDO中,我有一个userid作为外键来记录哪个用户上传了图像。但是它没有布尔值,因为认为一个用户可能会上传许多图像,但只有一个是肖像。 有什么方法可以实现这一点吗?或者我需要维护另一个表(例如,Port

  • 我正在使用Postgres10.8、Java8和Spring Boot2.1.9 with Data JPA来映射我的实体和我的数据库表。在我的数据库中,我对表进行了分区,并使用了继承策略。 我的结构是这样的: 我的实体: 我认为问题可能是由于将数据重定向到子表中插入的触发器引起的,而Spring data不识别它。 有办法修好吗?

  • 我希望以以下方式映射实体: 我有一个用户,他买了一辆车(特定的品牌、型号和变体)。 为此,我创建了以下类。 Car.java汽车 CarModel.java 汽车变体.java 最后,用户.java 现在,我的问题是。 在现实生活中,用户可能拥有许多汽车,每辆汽车都有特定的品牌、型号和变体。我想用JPA / Hibernate实现这样的功能。 我可以定义与和的关系。在这种情况下,如果我执行或我最终

  • 我希望在我正在从事的一个项目中使用CQR,但是我目前正在努力寻找实现CQR查询端的最佳方法。基于我有限的理解,有一个瘦数据层(有时称为瘦读取层),用于查询数据库并返回DTO,其中包含应用程序UI层使用的查询结果。 由于这是一个Java的EE应用程序,我正在开发薄数据层,使用JPA使用EntityManager.createNamedQuery查询数据库,返回一个包含结果的实体,然后将其映射到DTO

  • 我在两个不同的依赖项DependencyA和DependencyB中有两个类TableNameA和TableNameB,它们表示表table_name_a和table_name_b,字段如下所述。 如上所述,我正在使用jooq,并且我想将table_name_a和table_name_b记录映射到TableNameA和TableNameB类中,但是在TableNameA的对象中,只有“FIELD”

  • 我有以下模式: 项目(ID,名称)项目用户(项目ID,用户ID)用户(名称,ID) 实体如下 显然是一对多。项目可以有多个用户。 现在,我的目标是编写jooq查询,在那里我可以获取已经有相应用户的项目对象。 但是当预期约15时,查询将恢复千分之一的结果