Oracle 11g、Java(struts2)、および Hibernate を使用してアプリケーションを開発しています。
NUMBER(22,0) 型の列 mytemp_id を持つ mytemp という名前のテーブルがあります。
私のmytemp.hbm.xmlファイルIDでは、以下のとおりです
<id name="mytempId" type="big_decimal">
<column name="MYTEMP_ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">MYTEMP_TEMP_ID_SEQ</param>
</generator>
</id>
私のOracleデータベースでは、「MYTEMP_TEMP_ID_SEQ」という名前のシーケンスが作成され、Oracleで正常に動作しています。
休止状態を使用してレコードを挿入しようとすると、次のエラーが表示されます
org.hibernate.id.IdentifierGenerationException: この ID ジェネレーターは long、integer、short、または string を生成します
私のシーケンスは Number を返すので、hibenate はそれを BigDecimal と見なし、hibernate のシーケンス ジェネレーター クラスは long、integer、short、および string のみの値を考慮しているようです。
Hibernate は BigDecimal で問題を起こすべきではありません。しかし、シーケンスジェネレーターに BigDecimal を実装していないと思います
問題の解決を手伝ってくれる人はいますか?
ありがとう。