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