我正在使用一个 Spring 引导应用程序连接到 AS400 数据库,使用 com.ibm.db2.jcc.DB2Driver 驱动程序和 Spring Data JPA。 我使用 org.hibernate.dialect.DB2Dialect 方言。 当我启动应用程序时,出现错误
Could not fetch the SequenceInformation from the database
com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=SYSCAT.SEQUENCES;TABLE, DRIVER=4.26.14
这意味着表SYSCAT.SEQUENCES
丢失了,因为它不需要。 该应用程序工作正常,但错误困扰着我。 据我所知,SequenceInformations只有在我在某处生成ID时才重要,我不做什么。 此应用程序仅用于将数据从一个地方复制到另一个地方,因此我只使用 JPA@Id
注释,而不使用@GeneratedValue
注释。 我是否缺少序列信息的一些用途? 有没有办法关闭序列信息的获取?
这些是我的应用程序属性:
spring:
datasource:
driver-class-name: com.ibm.db2.jcc.DB2Driver
hikari.connection-test-query: values 1
hikari.maximum-pool-size: 25
jpa:
database-platform: DB2Platform
hibernate.ddl-auto: none
open-in-view: false
properties:
hibernate:
dll-auto: none
dialect: org.hibernate.dialect.DB2Dialect
naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
你用错了方言。请使用:
org.hibernate.dialect.DB2400Dialect
我已经将方言从DB2Dialect更改为DB2400Dialect,它对我有用。
##spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.DB2Dialect
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.DB2400Dialect