java - 具有相同数据/列但表名不同的 Hibernate 和表

标签 java database hibernate jpa persistence

我正在使用的数据库有许多表具有相同的列,但具有(显然)不同的表名(我没有设计它)。例如(这些是数据库表名):

company1Data
company2Data
company3Data
etc.

是否可以使用 JPA 和 hibernate 将它们映射到一个 Java 类实体?该类的名称将是Data,然后在使用它时在某处传入例如company1,以便对象使用company1Data表?

或者对于这样的事情只使用普通的、普通的 Java 对象更好吗?

谢谢!

最佳答案

从根本上说,这里的问题是糟糕的(非常糟糕的)数据库设计。理想情况下,您只需解决此问题。

如果你不能,我可以看到一些方法。

一种是通过继承对其进行建模,使用 table per class映射。您将使 Data 成为一个抽象实体,然后创建映射到每个表的琐碎的具体子类。这可行,但对于任何不限于特定类的查询来说效率低下,因为它们将涉及查询多个表,并且使用起来会很尴尬,因为您需要为每个表使用特定的类。

另一个是用 View 来解决这个问题。创建一个 View ,它是所有表的联合,然后映射它。这里的问题是您将无法插入其中。您也许可以在这里使用触发器做一些聪明的事情,但这将取决于您的数据库,并且需要比我更多的数据库和 JPA 魔法!

关于java - 具有相同数据/列但表名不同的 Hibernate 和表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16707540/

相关文章:

java - 如何创建扩展 AsyncTask 的父类(super class)?

sql - 实时对大量数据进行版本控制

ruby-on-rails - 在 Ruby on Rails 中播种

java - Hibernate Criteria Limit 机制?

spring - HibernatePersistence javax.naming.NameNotFoundException 抛出数据源

hibernate - 如何使用 mysemma 记录 querydsl 在后台生成的 sql 查询

java - 如何从字符串验证和实例化 Java Locale?

java - 没有定义值的小数不会得到零

java - 只有创建 View 层次结构的原始线程才能接触其 View 。在安卓上

mysql - 如果修改了源则更新表