【问题标题】:Spring Hibernate JPA Go through All Databases Schemas and All TablesSpring Hibernate JPA 遍历所有数据库模式和所有表
【发布时间】:2017-04-20 03:17:59
【问题描述】:
@Entity
@Table(name = TaxiBusiness.tableName)
public class TaxiBusiness {
    public static final String tableName = "gps_accept_order_" + 20170306;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "ID")
    private int ID;
    ...
}

我想重用同一个实体来遍历所有模式和表。每月一个模式,每天一个表。怎么做?

【问题讨论】:

  • 您想要的是分片,这已在Hibernate Shards 项目中实现,但是由于跟不上较新的 Hibernate 版本,您的里程可能会有所不同。所以这可能取决于您使用的休眠版本。

标签: mysql spring hibernate jpa spring-boot


【解决方案1】:

您需要遍历所有具有相同结构的表。因此,为什么不将“table_date”一一复制到另一个表“current_table”。然后,在“current_table”上做任何你需要的事情。

【讨论】:

    【解决方案2】:

    正如@Subrata 提到的,每天创建一个新表可能不是一个好习惯。

    但是无论如何,如果您想这样做,我可以想到一个选项是使用数据库同义词/别名:FOO 将是 FOO_20170306 的别名,直到...您将别名更改为指向 FOO_20170307。

    有关详细信息,您可以查看答案: https://stackoverflow.com/a/3880200/1934211

    希望这对你有用,但尚未测试。

    已编辑:

    这里有一种在hibernate中使用表同义词的方法:JPA Entiy on synonym instead of table

    我发现的另一个选项是为休眠表创建自定义Naming Strategy:有关详细信息,请查看:https://stackoverflow.com/a/3618315/1934211

    【讨论】:

      【解决方案3】:

      实际上这不是一个好习惯。如果只保留一个模式会更好。您可以改进您的数据库设计,这样无论月份和日期是什么,我们都不需要每天创建单独的表。您想实现的目标实际上是个坏主意。

      想一个有效的方法来保持数据库设计的简单。

      祝你好运!!

      【讨论】:

      • 我正在从现有数据库中读取模式。除了阅读之外,我无法控制现有架构。
      猜你喜欢
      • 2015-06-19
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多