spring和progress-4gl-更改jpa模式命名查询格式

piztneat  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(342)

我有一个spring启动应用程序,它连接到progressopenedge数据库(不是postgree)。
但是我在尝试从progress表获取数据时遇到了一些问题,当我调用“findall()”或“findbyid()”等方法时,它会返回以下错误:

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

但“ems2esp”数据库中确实存在“integ\ u table\ u003c”。当直接运行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”模式,因为我看到一些在线帖子说这可能会导致上面的错误。
我该怎么做?谢谢您

gg58donl

gg58donl1#

我通过以下方法解决了这个问题:
在“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

在连接字符串中,我添加了“;initializationstring=在最后设置架构“pub”。现在看起来是这样的:

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

此外,我还必须确保@table annotation中的“schema”属性不应被定义:

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

相关问题