Spring 和 Progress-4GL - 更改 JPA 架构命名查询格式

Spring and Progress-4GL - Change JPA schema naming query format

我有一个 Spring 连接到 Progress Open Edge 数据库(不是 postgree)的启动应用程序。

但是我在尝试从 Progress Table 获取数据时遇到了一些问题,当我调用“findAll()”或“findById()”等方法时 returns 出现以下错误:

Table/view/synonynm "EMS2ESP.INTEG_TABLE_003C" cannot be found. (15814) (-210083)

但是,“INTEG_TABLE_003C”确实存在于“EMS2ESP”数据库中。当 运行 直接 select 它工作正常。

我正在 application.properties 中尝试使用以下属性:

spring.datasource.url=jdbc:datadirect:openedge://HOM-DB-01:25475;databaseName=ems2esp
spring.datasource.username=sysprogress
spring.datasource.password=sysprogress
spring.datasource.driver-class-name=com.ddtek.jdbc.openedge.OpenEdgeDriver
spring.datasource.database-platform=org.hibernate.dialect.SQLServerDialect

这是我的实体之一:

@Entity
@Table(name = "INTEG_TABLE_003C")
@Data
public class Progress003c extends IntegTable003c {
 // Class properties and etc...
}

我想Spring从生成的查询中删除“EMS2ESP”架构,因为我看到一些在线帖子说这​​可能会导致上述错误。

我该怎么做?谢谢

我通过执行以下操作设法解决了问题:

  1. 在“application.properties”中我放了下面几行

    spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
    
    spring.jpa.hibernate.naming.implicit-strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
    
  2. 在连接字符串中,我在最后添加了“;INITIALIZATIONSTRING=set schema 'PUB'”。现在看起来像这样:

    spring.datasource.url=jdbc:datadirect:openedge://HOM-DB-01:25475;databaseName=ems2esp;INITIALIZATIONSTRING=set schema 'PUB'
    

此外,我必须确保不应定义@Table 注释中的“架构”属性:

@Table(name = "INTEG_TABLE_003C", schema="DO NOT DEFINE SCHEMA")