【发布时间】:2018-11-06 11:48:56
【问题描述】:
我可以在 Spring 类中获取属性值,如下所示:
@Value("${database.name}")
private String databaseName;
我必须通过加入不同数据库中的不同表来执行本机查询。
@Query(value="select t1.* FROM db1.table1 t1 INNER JOIN db2.table2 t2 ON t2.t1_id1 = t1.id1")
我必须从属性文件中获取它们,而不是硬编码数据库名称,即此处的 db1 和 db2。
如何获取Spring Data JPA Repository中@Query注解内的属性值?
【问题讨论】:
-
这里有个很好的问题是你所说的 2 个差异数据库是什么意思?因为如果您谈论的是两个完全不同的数据库服务器,您可能需要配置 2 个数据源,或者您可以谈论 2 个不同的模式,这是另一种情况。
-
但是在这两种情况下,我想说,您的存储库不应该知道数据库名称。您最好重新考虑您的设计,但如果您无法更改它 - 我假设您将不得不在 @Query 中硬编码 DB 名称。
-
目前有两种不同的模式。我已经配置使用:medium.com/@joeclever/…
-
您是否考虑过创建一个服务,在其中注入 entityManager 并使用 entityManager 或条件 API 创建查询,您可以使用它们构建更灵活的查询。您可以将来自
.properties的值注入此服务,然后在使用 EntityManager 构建查询时使用 -
对于这种特定情况,您可以使用 EntityManager 创建查询,而不是使用存储库(将其注入到您也可以注入
properties的某个组件)
标签: spring-boot spring-data-jpa