在 Spring JPA 中跨两个不同的数据库表进行查询
Posted
技术标签:
【中文标题】在 Spring JPA 中跨两个不同的数据库表进行查询【英文标题】:query across two different database table in spring JPA 【发布时间】:2017-11-06 04:22:36 【问题描述】:我有三张桌子。 Table1 在 DB1 中,table2 和 table3 在 DB2 中,如下所述:
DB1 中的表 1:customerId、accountNumber
DB2 中的表 2:customerId、accountNumber、id
DB2 中的表 3:id、名称、国家
我想根据 table1 中的 customerId 和 accountNumber 从 table3 中获取名称和国家/地区。这些表格如上所述相关。表没有任何映射,只是列是相同的。
我正在使用 Spring JPA 和 mysql。
谁能帮助如何在 Spring JPA(在 JPARepository 类中)跨数据库对上述 3 个表执行连接查询。
我想在 repo 类中运行一个连接查询:
select distinct d2t3.id from DB1.Table1 d1t1, DB2.Table2 d2t2, DB2.Table3 d2t3
where d1t1.customerid=d2t2.customerid
and d1t1.accountNumber=d2t2.accountNumber
and d2t2.id=d2t3.id;
【问题讨论】:
完成一些基本教程。如果您仍有问题和具体问题,我们很乐意提供帮助。 @JensSchauder,能否请您提供本教程的链接,我试图找到但找不到,因此在这里发布了问题... 不知道它们是否有任何好处,但是在谷歌搜索相关关键字时这些出现在最前面:tutorialspoint.com/jpatutorialspoint.com/jpa/jpa_jpql.htmspring.io/guides/gs/accessing-data-jpa @JensSchauder,感谢您提供的网址。我已经浏览了这些 URL,但它们与跨数据库连接表无关。我需要连接来自两个数据库的三个表。 @Manglesh 你有什么解决方案可以满足你的要求吗?如果是,请告诉我。谢谢 【参考方案1】:您可以使用链接配置多数据源配置:
https://medium.com/@joeclever/using-multiple-datasources-with-spring-boot-and-spring-data-6430b00c02e7
然后您就可以按如下方式运行查询:
@Query(value = "select distinct d2t3 from DB1.Table1 d1t1, DB2.Table2 d2t2,
DB2.Table3 d2t3 where d1t1.customerid=d2t2.customerid and
d1t1.accountNumber=d2t2.accountNumber and d2t2.id=d2t3.id", nativeQuery = true)
List<Table3> retrieveByQuery();
【讨论】:
以上是关于在 Spring JPA 中跨两个不同的数据库表进行查询的主要内容,如果未能解决你的问题,请参考以下文章
两个不同的查询返回相同的对象 Spring Boot JPA
是否可以在 Spring Boot 中运行两个使用 spring.jpa.generate-ddl 填充的嵌入式数据库?