sql >> データベース >  >> RDS >> Oracle

HibernateはデータベースからSequenceInformationをフェッチできませんでした

    私は次のように問題を解決しました。 Oracle12cDialectの拡張機能を作成しました。列の最大値/最小値を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";
        }
    
    }
    

    方言の実装を参照するapplication.propertiesファイル

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

    最小値と最大値を制限することにより、シーケンスを再作成できます。私の場合、それはできません。私が使用する主キーのディメンション番号(12)は、-9223372036854775807から9223372036854775808までの範囲の制限内にあり、マージンが大きくなっています



    1. 条件が<>trueの場合にPostgreSQLがnull値を返さないのはなぜですか

    2. PDO AdvancedCRUDGeneratorツールを使用してPHPCRUDインターフェイスをすばやく構築する

    3. Ubuntu 9.xでORACLE_HOME変数を正しく設定するにはどうすればよいですか?

    4. 1つのクエリphpに複数のmysqlINSERTステートメント