2012-02-02 9 views
0

シーケンスから生成された奇妙な主キーが静的Stringと連結しているレガシーデータベーステーブルをマップする必要があります。@GeneratedValue(Strategy = GenerationType.SEQUENCE)から@Idを文字列で連結した

Oracle Sequenceは、標準に従ってIDを生成します。問題のテーブルのID列は、そのシーケンス番号と文字列AAの連結です。 JPAを使用して、新しいオブジェクトを永続化するときに同じ形式でID値を作成することは可能ですか?

Oracleのシーケンスは、増分番号、123、 `4を...生成など。テーブルのIdがあることが必要

AA_1AA_2AA_3AA_4 ...など。

私は、クラス内のIDフィールドに注釈を付けることでシーケンスからIDを作成する方法を理解しています。シーケンスを取得してAA文字列を連結して独自の注文ID生成クラスを作成する必要があると仮定します。

答えて

2

IdentifierGeneratorインターフェイスを拡張して独自のカスタム識別子ジェネレータを作成する必要があります。

これで、Oracleの順序を使用して値を取得し、連結を実行できます。

次に、ジェネレータクラスをマッピングに指定できます。

+1

多くのありがとうございましたAlex、少し違ったやり方で、PersistentIdentifierGeneratorの抽象的なインプリメントでIdentifierGeneratorの具体的なSequenceGenerator実装をラップしました。私は特定のプレフィックスのためにそれを拡張します。私はその後私に注釈をつける – John