sql >> Database teknologi >  >> RDS >> Oracle

Hibernate kunne ikke hente SequenceInformation fra databasen

Jeg løste problemet som følger. Oprettet en udvidelse til Oracle12cDialect. Begrænset den maksimale/minimum værdi af kolonner til SQL

package ru.mvawork.hibernate;

import org.hibernate.dialect.Oracle12cDialect;

@SuppressWarnings("unused")
public class CustomOracleDialect extends Oracle12cDialect {

    @Override
    public String getQuerySequencesString() {
        return "select SEQUENCE_OWNER, SEQUENCE_NAME, greatest(MIN_VALUE,         -9223372036854775807) MIN_VALUE,\n"+
                "Least(MAX_VALUE, 9223372036854775808) MAX_VALUE, INCREMENT_BY,     CYCLE_FLAG, ORDER_FLAG, CACHE_SIZE,\n"+
                "Least(greatest(LAST_NUMBER, -9223372036854775807), 9223372036854775808) LAST_NUMBER,\n"+
                "PARTITION_COUNT, SESSION_FLAG, KEEP_VALUE\n"+
                "from all_sequences";
    }

}

I filen application.properties refererede til en dialektimplementering

spring.jpa.properties.hibernate.dialect=ru.mvawork.hibernate.CustomOracleDialect

Du kan genskabe sekvenser ved at begrænse minimums- og maksimumværdierne. I mit tilfælde kan jeg ikke gøre det. De primære nøgler, som jeg bruger, har dimensionen Number (12), som falder inden for områdegrænsen fra -9223372036854775807 til 9223372036854775808 med en stor margen



  1. ved hjælp af (-) bindestreg i mysql tabelnavn

  2. Oracle SQL-udvikler:Fejl - Test mislykkedes:Netværksadapteren kunne ikke etablere forbindelsen?

  3. Cloud Vendor Deep-Dive:PostgreSQL på AWS Aurora

  4. PostgreSQL-databasetjeneste