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

Java / Hibernate JPA:InheritanceType.TABLE_PER_CLASS和ID

彭弘伟
2023-03-14
问题内容

我正在使用Hibernate JPA。

假设我有这些课程:

AbstractPerson
|--> ConcreteEmployee
|--> ConcreteCustomer

有什么方法可以使具体类具有独立的ID?

我正在使用InheritanceType.TABLE_PER_CLASS。


问题答案:

从《 Hibernate注释参考指南》中:

2.2.4.1。每班桌

JPA规范,Hibernate参考文档,Hibernate in
Action以及许多其他地方都说明了这种策略的许多缺点(尤其是多态查询和关联)。Hibernate解决了大多数使用SQL UNION查询实现此策略的问题。它通常用于继承层次结构的顶层:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Flight implements Serializable { ... }

如果它们是双向的,则此策略支持一对多关联。
该策略不支持IDENTITY生成器策略:ID必须在多个表之间共享。因此,在使用此策略时,您不应使用AUTOIDENTITY

因此,恐怕您想要的东西不受支持(建议使用GenerationType.TABLE)。



 类似资料:
  • 问题内容: 我很好奇,是否有人对提供对MSMQ的访问的Java库有任何建议?我已经下载了J-Integra Java- COM库的试用版,并构建并运行了他们的MSMQ示例应用程序,但是我很好奇是否有任何好的(免费的)替代方案。我遇到了一些JNI实现,例如jMSMQ和其他一些实现,但是如果可能的话,我宁愿避免使用JNI。 我们还研究了一些.NET <-> JMS互操作解决方案,例如JNBridge(

  • 问题内容: 我对单个文件数据库提供的简洁性感到着迷。可以使用哪些驱动程序/连接器库来连接SQLite并将其与Java一起使用。 我发现了一个包装器库http://www.ch-werner.de/javasqlite,但是还有其他更著名的项目吗? 问题答案: 在使用SQLite和Java 搜索信息时找到了你的问题。只是想我要补充我的回答,我也贴在我的博客。 我已经用Java编码了一段时间了。我也了

  • 我的第二个问题是:为什么在获得session.setAttribute()之后必须使用它来打印新值。我的逻辑如下。正如我们所知,每个servlet只实例化一次--我获取属性(session.getAttribute(COUNTER)),检查我是否不同于null,然后递增它,如果我注释setAttribute,我将无法看到新的递增值。为什么我必须重新设置才能得到正确的值?当我按refresh时,我发

  • 这个示例代码来自一本Java书籍,从墙上的99瓶啤酒到没有啤酒打印出这首歌。问题是,当墙上是1瓶啤酒时,它仍然写着瓶子。我试图通过在末尾添加部分来解决这个问题。但是,它仍然显示1瓶啤酒在墙上,我瓶啤酒在墙上。 我不知道该改变什么来解决这个问题。是否创建另一个while部分? 如果你能给他们一个提示,这样我就可以自己解决它,那也很酷!因为我知道我的实际歌曲输出是在第一个if部分,但我不知道我应该在哪

  • 问题内容: 在Linux中,是否可以在tomcat6上部署使用Java 7编写的Web应用程序?如果是这样,需要修改什么配置才能使其正常工作? 我已经尝试过更改文件中的变量并重新启动,但是根据tomcat管理器网页,它仍在使用1.6,并且只有以1.6或更低版本编写的应用程序才能正确部署。 我在不同位置安装了jdk 1.6和1.7。 问题答案: 使用Java JDK 1.7.0编译servlet时遇

  • 问题内容: 在阅读了Java HttpURLConnection上的所有文档之后,我仍然很困惑,因为它执行哪种池化以及如何处理连接。 例如下面的代码 是否都需要冲洗并关闭两者,以使基础套接字可重复使用? 是否会关闭底层套接字(从而使其无法重用)?是否会影响这种行为? 如果我使用不同的URL对象,但具有相同的URL,则从它们创建的s是否共享底层套接字?URL的主机部分相同但路径不同时如何? 何时会破