sql >> Database >  >> RDS >> Oracle

Hibernate kon de SequenceInformation niet ophalen uit de database

Ik heb het probleem als volgt opgelost. Een extensie gemaakt voor Oracle12cDialect. De maximale/minimale waarde van kolommen beperkt tot 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";
    }

}

In het bestand application.properties wordt verwezen naar een dialectimplementatie

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

U kunt reeksen opnieuw maken door de minimum- en maximumwaarden te beperken. In mijn geval kan ik het niet. De primaire sleutels die ik gebruik hebben de dimensie Number (12), die binnen de bereiklimiet van -9223372036854775807 tot 9223372036854775808 valt met een grote marge



  1. Geldige indelingsreeksvervangingen voor de SQLite StRFtime()-functie

  2. Een opgeslagen PROCEDURE oproepen in Toad

  3. Waarom hebben sommige commando's in psql geen effect?

  4. Django cache.set() veroorzaakt dubbele sleutelfout