Hibernate でエンティティとして使用しようとしている JAXB を介して生成されたクラスがあります。Java BigIntegers として定義されている数値フィールドがあります。DB2のように列を定義しても、Hibernateは次のようなバリエーションで文句を言います:
間違った列タイプ .... 列 MY_COLUMN 検出: 10 進数、予想: 数値 (19,2)。
DB2 の bigint や数値 (19,2) などを試しました。
Hibernate に方言を選択させています。DB2 の方言を選択しています。DB2 で列を定義して、Hibernate で列を使用して Java BigInteger を格納できるようにするにはどうすればよいですか?
Hibernate では big_integer として定義し、DB2 では bigint として定義すると、次のようになります。
間違った列タイプ .... 列 MY_COLUMN が検出されました: bigint、予想: numeric(19,2)
アップデート
そこで、hibernate.hbm2ddl.auto を validate から create に変更し、Hibernate にスキーマ自体を作成させました。ログから、numeric(19,2) の定義を使用して create table ステートメントを生成していることがわかりました。DB2 では、テーブルが作成されると、定義は decimal(19,2) でした。アプリは正常に起動しました。
次に、アプリをシャットダウンし、hibernate.hbm2ddl.auto の設定を再コンパイルして検証し、再起動しました。
Hibernate でエラーが発生しました: Found: decimal、expected: numeric(19,2)
では、Hibernate は自身で作成したばかりのスキーマを検証できないのでしょうか?