Hibernate SequenceGenerator のカスタマイズについての質問です。
Oracle と SQLServer の 2 つのレガシー データベースで動作するアプリケーション (Spring 3.1/Hibernate 4) があります。Id ジェネレーターで問題が発生しました。
私のエンティティでは、ID ジェネレーター戦略に AUTO の注釈を付けて、Oracle で動作する場合はデフォルトで SequenceGenerator を選択し、SQLServer で動作する場合はデフォルトで IdentityGenerator を選択するようにしました。問題なく SQLServer で動作します。しかし、Oracle の場合、hibernate はハードコードされた「hibernate_sequence」をデフォルトのシーケンス名として使用します。これは、従来の Oracle データベースがテーブルごとのシーケンス名として規則 TableName+"_SEQ" を使用するため、問題を引き起こしました。
Hibernate SequenceGenerator のソース コードを変更し、独自の休止状態のコード ベースを構築することで、問題を解決することができました。しかし、Hibernate のアップグレード中にこれを覚えておく必要があるため、これはあまり好ましくありません。
また、SequenceGenerator/IDGenerator を切り替える独自の ID ジェネレーターを作成しようとしましたが (ID フィールドに注釈を付けました)、失敗しました。いずれにせよ、これは私がためらっている JPA/Hibernate フレームワークの内部にさらに飛び込む必要があるため、好ましい方法ではありません。
私が望むのは、CustomizedSequenceGenerator を作成し、Hibernate が構成によって使用しているものを何らかの方法でオーバーライドすることです。でも、「なんとなく」を見つけることができました。
誰もそのような経験をしていますか?
ありがとう、サイモン