私は非常に単純なシナリオ、1 つのテーブル、自動生成主キーの 1 つのシーケンスを持っています。
CREATE TABLE foo (event_id NUMBER(19,0)....
CREATE SEQUENCE event_seq
ハイバネート マッピングの一部は次のようになります。
...
<id name="id" column="EVENT_ID" type="long">
<generator class="native">
<param name="sequence">event_seq</param>
</generator>
</id>
...
長時間問題なく動作します。しかし、最近私はこれを持っています:
ORA-01400: cannot insert NULL into ("TESTING"."FOO"."EVENT_ID")
これは、Oracle が EVENT_ID のシーケンス番号を生成できなかったことを意味しますか? この理由は何ですか?どうやらこのエラーは 64 ビット Oracle から発生したようですが、問題に関連している可能性はありますか? テーブルとシーケンスを削除して再作成しても役に立ちません。その特定のマシンで動作したくないだけです。私が何をしても、これを再現できません。エラーは、ほとんど到達できないユーザーの1人から発生します。
何か案は?
- - - - - - - - 問題が解決しました - - - - - - - -
元の問題は、32 ビット OS でドライバー 10.2.0.1.0 を使用しているときに、Oracle 10.2.0.1.0 64 ビットで検出されました。ドライバーが 11.2.0.2.0 に更新されると、問題は解消されました。VM が 32 ビットまたは 64 ビット システムとして実行されているかどうかは、すべて VM に依存します。