当前位置: 首页 > 面试题库 >

JPA:实现模型层次结构-@MappedSuperclass与@Inheritance

弓明亮
2023-03-14
问题内容

我将Play Framework 1.2.4与PostgreSQL和一起使用JPA。我想拥有一个模型层次结构,并看到有一些替代方法。

我有一个基类(抽象的)和两个扩展该基类的具体类。我不想坚持这个基础课程,而我想拥有具体的课程。在基类中,我还有另一个Model类作为属性,换句话说,我@ManyToOne在基类中有关系。

我的问题是实现此目标的最佳方法是什么?使用@MappedSuperclass@InheritanceTABLE_PER_CLASS策略?我有点困惑,因为它们看起来
几乎 相等。

我还担心将来可能会遇到的查询和性能问题。


问题答案:

MappedSuperClass必须用于继承属性,关联和方法。

当您有一个实体和几个子实体时,必须使用实体继承。

您可以通过回答以下问题来判断您是否需要一个:模型中是否存在其他一些可以与基类相关联的实体?

如果是,则基类实际上是一个实体,您应该使用实体继承。如果没有,则基类实际上是一个包含几个不相关实体共有的属性和方法的类,您应该使用映射的超类。

例如:

  • 您可以有几种消息:SMS消息,电子邮件消息或电话消息。一个人有一个消息列表。无论哪种消息,您都可以将提醒链接到消息。在这种情况下,Message显然是一个实体,必须使用实体继承。
  • 您所有的域对象都可以具有创建日期,修改日期和ID,因此可以使它们从基本AbstractDomainObject类继承。但是,没有任何实体可以与AbstractDomainObject建立关联。它始终是与更具体的实体(客户,公司等)的关联。在这种情况下,使用MappedSuperClass是有意义的。


 类似资料:
  • 到目前为止,我们一直在使用Spring JpaRepository来满足我们的需求。我觉得这个新需求需要自定义查询,我不认为可以直接使用JParepository来处理这个问题。我只想知道你是怎么想的。不需要自定义sql查询就可以做到这一点吗?

  • 我们正在创建一个REST API,目前我们有两种方法来定义资源。 基本上,我们有、和,其中一个有n个和一个有n个。 分层方法 该层次结构在URI中可见 要搜索所有图像,我们需要一个搜索资源 平进路 我们还需要考虑移动和修改。

  • 比如一辆车,在Threejs中你可以使用一个网格模型去描述车上面的一个零件,多个零件就需要多个网格模型表示,这些网格模型之间就会构成父子或兄弟关系,从而形成一个层级结构。在机械、建筑相关的Web3D应用中,通常会用到层级模型的知识,一个层级模型就是一本书的目录一样。 本章主要目的是帮助你建立Threejs层级模型的概念,通过Threejs的组对象Group可以组织各个模型,构成一个层级结构。学习本

  • 在Tableau中,可以构建层次结构以可视化数据。可以通过以下步骤在Tableau中创建它: 例如,考虑数据源,例如Sample-Superstore,以及它的维度和度量。 第1步: 首先转到工作表。然后, 选择一个维度,然后右键单击该维度以创建层次结构。 转到“层次结构(Hierarchy)”选项。 并且,单击下面屏幕截图中显示的“创建层次结构(Create Hierarchy)”选项。 第2步

  • 我正在为我的项目使用Spring Data JPA(以hibernate作为提供程序),并想知道何时需要实体之间的双向映射? 在我的用例中,我有一个实体,与实体具有关系。目前,我在实体中没有相应的关系。从我所能理解的查看其他帖子,除非我需要通过我的实体/Hibernate删除,否则我可能不需要这样做。我想知道通过双向关系我还能得到什么? 这是我的,不包括访问者: 这是,不包括访问器: 如果我一直在

  • 零售商店的正确模式是什么?公司从商店销售产品。 这似乎违反了我对OOP所知的全部知识。通过层次结构向下传递数据的方法--在对象之间复制参数?我错过了什么?