Spring Hibernate JPA遍历所有数据库模式和所有表

时间:2017-04-20 03:17:59

标签: mysql spring hibernate jpa spring-boot

@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;
    ...
}

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

enter image description here

3 个答案:

答案 0 :(得分:1)

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

但无论如何你想要这样做有一个我能想到的选择是使用数据库同义词/别名:FOO将是FOO_20170306的别名,直到...你将别名更改为FOO_20170307上的点。 / p>

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

希望这对你有用,虽然没有经过测试。

<强>编辑:

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:-1)

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

思考一种保持数据库设计简单的有效方法。

祝你好运!