Mysql SpringHibernateJPA遍历所有数据库模式和所有表
我希望重用同一个实体来遍历所有模式和表。每月一个模式,每天一个表。怎么做Mysql SpringHibernateJPA遍历所有数据库模式和所有表,mysql,spring,hibernate,jpa,spring-boot,Mysql,Spring,Hibernate,Jpa,Spring Boot,我希望重用同一个实体来遍历所有模式和表。每月一个模式,每天一个表。怎么做 实际上这不是一个好的做法。如果只保留一个模式,效果会更好。您可以改进数据库设计,这样无论月份和日期是什么,我们都不需要每天创建单独的表。实际上,你想达到什么目的是个坏主意 考虑一种保持数据库设计简单的有效方法 祝你好运 正如@Subrata提到的,每天创建一个新表可能不是一个好的做法 但无论如何,如果你想这样做,我可以想到一个选项,那就是使用数据库同义词/别名:FOO将是FOO_20170306的别名,直到。。。将别名更改
实际上这不是一个好的做法。如果只保留一个模式,效果会更好。您可以改进数据库设计,这样无论月份和日期是什么,我们都不需要每天创建单独的表。实际上,你想达到什么目的是个坏主意 考虑一种保持数据库设计简单的有效方法
祝你好运 正如@Subrata提到的,每天创建一个新表可能不是一个好的做法 但无论如何,如果你想这样做,我可以想到一个选项,那就是使用数据库同义词/别名:FOO将是FOO_20170306的别名,直到。。。将别名更改为指向FOO_20170307 有关详细信息,您可以查看答案: 希望这对你有用,不过还没有测试过 编辑: 下面是在hibernate中使用表同义词的一种方法:
我发现的另一个选项是为hibernate表创建自定义表:有关详细信息,请查看:您需要浏览所有具有相同结构的表。因此,为什么不将“table_date”一个接一个地复制到另一个表“current_table”中呢。然后,在“current_table”上执行您需要的任何操作。我正在从现有数据库中读取模式。除了阅读,我无法控制现有的模式。你想要的是切分。这已经在项目中实现了,但是由于没有跟上更新的Hibernate版本,你的理解可能会有所不同。因此,这可能取决于您使用的hibernate版本。
@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;
...
}