当前位置: 首页 > 知识库问答 >
问题:

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

谢承
2023-03-14

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

company1Data
company2Data
company3Data
etc.

有没有可能用JPA和Hibernate将这些映射到一个Java类实体?类的名称是data,然后在使用它时传入例如company1,以便对象使用company1data表?

还是只使用普通的、普通的Java对象来完成这样的任务更好?

谢谢你!

共有1个答案

莘翰采
2023-03-14

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

如果你做不到,我可以找到几种方法。

一种是用继承来建模,使用每个类的表映射。您可以使data成为一个抽象实体,然后创建映射到每个表的简单的具体子类。这是可行的,但对于任何不约束于特定类的查询来说,效率会很低,因为它们将涉及查询多个表,并且使用起来会很麻烦,因为您需要为每个表使用特定的类。

另一个是用一个视图来修复这个。创建一个视图,它是所有表的并集,然后映射它。这里的问题是你将无法插入它。您也许可以在这里用触发器做一些聪明的事情,但这将取决于您的数据库,并且比我有更多的数据库和JPA技巧!

 类似资料:
  • 问题内容: 我正在使用ajax加载数据并在DataTable中动态生成列名。我的数据表具有不同的列数,具体取决于用户的选择。(有一个下拉列表)。 例如,下拉列表中有2个选项,即“ 南部省” 和“ 北部省” 。 南部省 表有4列, 北部省 表有6列。 场景1 第一个用户选择具有4列的 Southern Province 。然后它生成的表没有错误,但是在此之后,如果用户选择具有6列的 Northern

  • 问题内容: 在SQL中,将行复制到另一个(备份)表中。如果备份表具有不同的结构(或不同的列名称),这可能吗?如果没有,实现此目标的最佳方法是什么? 这是我想做的:具有columns 。我想将一些行从该表复制到另一个具有column的表。内容进入,对等 问题答案: 该 列名 不事可言,只要该 数据类型 相匹配。 如果列的数据类型不匹配,请尝试相应地强制转换值。 只需尝试 使用小的虚拟表。确保明确列出

  • 问题内容: 该查询工作正常。但是问题是,产品表和类别表都具有名为“ name”和“ id”的字段。因此,当我获取此查询的结果时,它只给我一个名称和一个ID,但同时又需要ID和名称。 我如何做到这一点而不必重命名字段?是否可以使用自定义名称(例如product_name和category_name)返回? 问题答案: 您可以将别名添加到字段:

  • 问题内容: 我有一张供用户使用的表。但是,当用户对其个人资料进行任何更改时,我会将它们存储在临时表中,直到我批准它们为止。然后将数据复制到活动表中,并从临时表中删除。 我想要实现的是,在管理面板中或用户可以在提交前仔细检查的页面中查看数据时,我想编写一个查询,该查询将允许我从两个表中获取ID为ID的表中的数据两者都等于$ userid。然后,我想以表格形式显示它们,其中旧值显示在左列中,而新值显示

  • 问题内容: 我的MySQL数据库中有这些表: 通用表: Facebook表: 首席表: 基本上,常规表包含一些( 显然 )常规数据。基于generalTable.scenario,您可以在其他两个表中查找更多详细信息,这些表在某些熟悉的列中(例如,expiresAt),而在其他一些列中则不然。 我的问题是,如何仅通过一个查询就可以获取generalTable和正确的明细表的联接数据。 所以,我想这

  • 我正在运行以下JOOQ查询: table和joinTable都有id作为主键名称,但最终获取实体类包含joinTable的id和table的其余列。如果我重新排序表,结果相似,我有表的ID和joinTable的其余列。