【问题标题】:JPA eclipselink joined inheritance without discriminatorJPA eclipselink 加入了没有鉴别器的继承
【发布时间】:2012-08-10 11:35:26
【问题描述】:

我们正在为我们的新项目使用 JPA。我们有一个具有判别器的继承关系。

我们正在尝试从我的超类表中删除鉴别器字段,但我们无法弄清楚如何使用 eclipselink 来实现这一点。我们知道使用hibernate可以做到这一点,有谁知道如何使用eclipselink实现这一点?

您可能想知道我们为什么要实现这一点(我知道使用鉴别器更快,因为它消除了对其他表的存在检查的需要),这是因为我们尝试实现以下内容:JPA multiple discriminator values(请参阅问题和答案)。

【问题讨论】:

标签: inheritance jpa eclipselink discriminator


【解决方案1】:

我不相信这会按照您的预期进行。当您查询 ID 值为 1 的组织时,您返回的实体可以是组织、客户或供应商。 Java 不允许类型一次全部为 3,至少在您设置继承的方式中是这样。由于组织仍然可以在没有供应商或客户的情况下存在,因此继承对我来说没有意义。

这 3 个表格应代表不同的实体 - 一个组织可以有一个客户名称和/或一个供应商名称。

【讨论】:

  • 我同意这一点(见另一篇文章),但对于任何在谷歌上搜索这个问题的人:你知道是否可以删除鉴别器吗?
  • 您可以使用 ClassExtractor 在没有鉴别器的情况下映射继承,请参阅wiki.eclipse.org/EclipseLink/UserGuide/JPA/…
  • 没有鉴别器的继承映射在没有专有类的情况下无法工作,这绝对是 EclipseLink 中的一个大缺陷。
  • 似乎更像是 JPA 规范的一个问题,它使每个类的表和非描述符列继承处理可选且未定义。
猜你喜欢
  • 2014-04-20
  • 1970-01-01
  • 2011-03-26
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 2013-12-04
  • 2018-09-15
  • 1970-01-01
相关资源
最近更新 更多