Oracle
 sql >> Base de données >  >> RDS >> Oracle

Hibernate n'a pas pu récupérer les SequenceInformation de la base de données

J'ai résolu le problème comme suit. Création d'une extension pour Oracle12cDialect. Limité la valeur maximale/minimale des colonnes à 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";
    }

}

Dans le fichier application.properties fait référence à une implémentation de dialecte

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

Vous pouvez recréer des séquences en limitant les valeurs minimales et maximales. Dans mon cas, je ne peux pas le faire. Les clés primaires que j'utilise ont la dimension Nombre (12), qui se situe dans la limite de la plage allant de -9223372036854775807 à 9223372036854775808 avec une grande marge