【问题标题】:How to mention the sqlserver database name in spring jpa entity?如何在spring jpa实体中提及sqlserver数据库名称?
【发布时间】: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 中的表

【问题讨论】:

    标签: sql-server hibernate spring-boot jpa


    【解决方案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

      【讨论】:

        猜你喜欢
        • 2018-11-10
        • 1970-01-01
        • 2011-10-30
        • 2022-01-22
        • 2016-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-20
        相关资源
        最近更新 更多