在 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

在 Vuejs 中跨不同组件共享数据

在 Vuejs 中跨不同组件共享数据

使用Spring Boot JPA配置多个数据源

是否可以在 Spring Boot 中运行两个使用 spring.jpa.generate-ddl 填充的嵌入式数据库?

如何通过使用 JPA + Hibernate 和 Spring-boot 在一个数据库中使用多个模式?