Recibo esta excepción al iniciar una aplicación SpringBoot

Com.ibm.as400.access.AS400JDBCSQLSyntaxErrorException: [SQL0204] SEQUENCES in SYSCAT type * FILE not found.

El problema parece surgir en una llamada de Hibernate en

public Iterable<SequenceInformation> extractMetadata(ExtractionContext extractionContext) throws SQLException {
...
        final String lookupSql = extractionContext.getJdbcEnvironment().getDialect().getQuerySequencesString();

Donde esta el dialecto

public class DB2Dialect extends Dialect {
...
@Override
    public String getQuerySequencesString() {
        return "select * from syscat.sequences";
    }

No hay una biblioteca SYSCAT en nuestro sistema, sino SYSCAT1 y SYSCAT2. SEQUENCES está en QSYS2. ¿Alguna parte de la pila cree que está en otra plataforma? Este código solía funcionar hace un tiempo, pero la actualización de los marcos ha producido esto.

Ambiente

iSeries at V7R2M0
IBM Java Toolbox JDBC driver 10.5
JavaSE 1.8 (jdk 1.8.0_241)
All Spring framework dependencies from SpringBootInitialzr this week (Spring-Data-JPA for data)
SpringBoot 2.43, etc
-1
user4512668 11 mar. 2021 a las 22:46

1 respuesta

La mejor respuesta

Estaba usando el dialecto SQL incorrecto. Estaba subclasificando DB2Dialect para otros fines. Una vez que cambié a DB2400Dialect, la aplicación se inició correctamente. Esta aplicación solía funcionar, pero este problema apareció después de las actualizaciones del marco. No estoy seguro de qué cambió, pero DB2400Dialect solucionó el problema.

0
user4512668 14 mar. 2021 a las 14:55