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

Oracle 10gを使用する場合の浮動小数点列のHibernateのスキーマ検証に関する既知の問題の最善の回避策は何ですか?

    これは既知の制限 です。 スキーマバリデーターについては、HHH-2315 を確認してください。 。したがって、ここには3つのオプションがあります(実際には4つですが、検証を非アクティブ化することは望ましくないと思います)。どちらか:

    • floatを使用する doubleの代わりに Javaレベルでは-これはオプションではないかもしれません。

    • パッチorg.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo) この特定のケースに特別な条件を追加するには、これは実際には簡単なオプションではありません。

    • org.hibernate.dialect.Oracle10gDialectを拡張します floatを使用する SQLタイプの場合DOUBLE

      public class MyOracle10gDialect extends Oracle10gDialect {
          public MyOracle10gDialect() {
              super();
          }
          protected void registerNumericTypeMappings() {
              super.registerNumericTypeMappings();
              registerColumnType( Types.DOUBLE, "float" );
          }
      }
      

    後者のオプションは安全に見えますが、リグレッションが発生しないかどうかを確認するためにいくつかのテストが必要になります。 OracleのJDBCドライバーコードを見ていなかったので、floatがどのようになっているのかわかりません。 およびdouble precision ドライバーレベルで異なります。



    1. SELECTとは異なる条件に基づくSUM()

    2. Heroku-単一のテーブルを共有postgresデータベースにダンプしてロードします

    3. ActiveRecord destroy_allに時間がかかるのはなぜですか?

    4. MariaDBでのDATE()のしくみ