【发布时间】:2020-01-03 06:32:25
【问题描述】:
我有一个数据库,其中包含已经(并将继续)使用命名策略创建的数千个表 - 每个日历日一个表:
- data_2010_01_01
- data_2010_01_02
- ...
- data_2020_01_01
所有表格都包含来自同一系统且形状相同的传感器数据。所以单个实体(我们称之为 SensorRecord)绝对会映射到所有表。
我曾想象过这样的事情会奏效:
@Query(nativeQuery = true, value = "SELECT * FROM \"?1\"")
Collection<SensorRecord> findSensorDataForDate(String tableName);
但事实并非如此,围绕该主题阅读似乎表明我走错了路。大多数关于动态命名的帖子似乎都明确指出每个表需要一个实体,但生成数千个重复实体似乎也是错误的。
我如何使用 JPA (JPQL?) 来处理表名遵循命名约定并且可以作为查询的一部分进行更改的数据?
【问题讨论】:
-
部分。一个答案说“你不能”,另一个答案显示了一个实体管理器代码片段,没有说明为什么这是首选解决方案的上下文。下面亚历克斯的回答是一个相当完整和有用的回答。
标签: java hibernate jpa spring-data-jpa