1、原因: 连接vastbase数据库序列最大值过大
可以执行下面代码进行查询序列
select * from information_schema.sequences
2、解决方案 (二选一)
1、vastbase数据库补丁升级
2、重写getQuerySequencesString方法
查看其底层源码发现实际上是调用了getQuerySequencesString()方法
其中PostgreSQL81Dialect该类的方法如下所示
问题找到了,进行重写方法,可以根据自己的pg版本选择继承的dialect
public class AdpPostgreSQLDialect extends PostgreSQL10Dialect {
public AdpPostgreSQLDialect() {
super();
registerColumnType(Types.BLOB, "bytea");
registerColumnType(Types.CLOB, "text");
}
@Override
public SqlTypeDescriptor remapSqlTypeDescriptor(SqlTypeDescriptor sqlTypeDescriptor) {
switch (sqlTypeDescriptor.getSqlType()) {
case Types.CLOB:
return LongVarcharTypeDescriptor.INSTANCE;
case Types.BLOB:
return LongVarbinaryTypeDescriptor.INSTANCE;
case Types.NCLOB:
return LongVarbinaryTypeDescriptor.INSTANCE;
}
return super.remapSqlTypeDescriptor(sqlTypeDescriptor);
}
@Override
public String getQuerySequencesString() {
return null;
}
}
properties文件添加如下配置,com.fx.config.dialect修改为自己的包名
spring.jpa.properties.hibernate.dialect=com.fx.config.dialect.AdpPostgreSQLDialect