如何在spring jpa实体中提及sqlserver数据库名称?
Posted
技术标签:
【中文标题】如何在spring jpa实体中提及sqlserver数据库名称?【英文标题】:How to mention the sqlserver database name in spring jpa entity? 【发布时间】:2019-12-01 10:34:02 【问题描述】:我的 Spring Boot 项目有两个实体,一个是员工
@Entity
@Table(name = "Employees ",schema = "dbo")
public class Employees
在 test1 数据库中,另一个是 Payroll
@Entity
@Table(name = "Payroll ",schema = "dbo")
public class Payroll
在 test2 数据库中,在 application.properties 文件中我有
spring.datasource.url: jdbc:sqlserver://hostname.com;databaseName=test1
这里 jpa 正在查看 test1 数据库中的两个表,因为我在 spring.datasource.url 中给出了该表
我需要知道如何让 jpa 知道 Payroll 表在 test2 数据库中可用
在 SQL SERVER Manangement studio 中,我们将通过提供此 SQL 来做到这一点
select * from test2..Payroll
这样,即使我们在 test1 db 中,我们也可以访问 test2 db 中的表
【问题讨论】:
【参考方案1】:我通过创建本机查询解决了这个问题,在查询中说明了我的数据库名称、架构名称和表名称。
这将像 JPA 嵌入式方法一样工作,通过返回对象列表,您可以在它们上调用 getter 方法来获取存储库返回的属性。
希望这对某人有所帮助。
@Query(
value = "select * from dbname.schema.table",
nativeQuery = true)
List<Employees> fetchAllEmployees();
@Query(
value = "select * from test2.schema.Payroll",
nativeQuery = true)
List<Payroll> fetchAllPayrollData();
【讨论】:
【参考方案2】:如果你想拥有两个不同的数据库,你应该配置两个完全不同的DataSources,并告诉Spring JPA为每个@Entity使用不同的DataSources。我认为以下链接会很有帮助:
Spring JPA - Multiple Databases
【讨论】:
以上是关于如何在spring jpa实体中提及sqlserver数据库名称?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Data 中漂亮地更新 JPA 实体?
如何使用 Kotlin 在 Spring JPA 中正确查询实体
在 Spring Data JPA 中,如何在运行时添加实体?
如何在 Spring Boot 中实现通用 JPA 存储库 - 它可以自动装配到任何实体/类类型的 Spring 服务中