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



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

但是当我试图从进度表中获取数据时,我遇到了一些问题,当我调用"findAll()"或"findById()":

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'
    

另外,我必须确保"schema"@Table注释中的属性不应该被定义:

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