代码之家  ›  专栏  ›  技术社区  ›  Jigar Naik

Spring Data+SQL Server从实体类中删除架构名称

  •  0
  • Jigar Naik  · 技术社区  · 5 年前

    不管怎样,都可以从类注释中删除模式并将其放入应用程序中。属性文件,这样,如果对于不同的环境,我可以从属性文件控制不同的模式。

    注意:我使用的是MS-SQL Server数据库。

    @Entity
    @Table(name = "TRANSACTIONS", schema="schema_name")
    public class Transaction implements Serializable {
    

    我在下面试过了,但没有一个适合我。

    spring.jpa.hibernate.default_schema=schema_name
    spring.jpa.properties.hibernate.default_schema=schema_name
    hibernate.default_schema=schema_name
    spring.hibernate.default_schema=schema_name
    
    0 回复  |  直到 3 年前
        1
  •  2
  •   codiallo    5 年前

    您应该在jdbc url中指定shcema名称,如下所示。

    jdbc:sqlserver://ipaddress:port;database=DBName;schema=SCHEMANAME;sendStringParametersAsUnicode=false
    
        2
  •  0
  •   Piyush Mishra    4 年前

    在继续之前,请确保您已完成以下操作: 在pom中添加了以下依赖项。xml:

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    </dependency>
    

    现在,您只需在应用程序中指定MySQL数据库所需的凭据。财产:

    spring.datasource.url= jdbc:mysql://localhost:3306/SchemaName? 
    useSSL=false&allowPublicKeyRetrieval=true
    spring.datasource.username= root
    spring.datasource.password= root
    

    因为您已经在spring中指定了模式名。数据源。url,你不需要再在任何地方这样做了。

    最后,您现在可以在不指定模式的情况下使用模型类(@Entity),如下所示:

    @Entity
    @Table(name = "Employee")
    public class EmployeeInfo {
    @Id
    @Column(name = "`EMPLOYEE_NUMBER`")
    private int empid;
    
    @Column(name = "`EMPLOYEE_NAME`")
    private String empname;