JPAエンティティにカスタムオブジェクトIDを注入する方法
質問
私はエンタープライズアプリケーションにJPA 2を使用していますが、私のDBAはちょうどひねりを加えて私を襲っています。
彼らは私に望んでいます 私のすべてのテーブルにグループの集中オブジェクトIDジェネレーターを使用します. 。これは、テーブル値やシーケンステーブルを使用するのではなく、 〜50 IDのバッチを取得するには、Webサービスに電話する必要があります.
それで、 新しいオブジェクトを保持しているので、最初にこのIDを注入する必要があります, 、そしてそれをテーブルに保存します。
したがって、これを処理するためにエンティティの@ID列を操作するにはどうすればよいですか。
私が持続する前にキーを設定するのと同じくらい簡単ですか? IDセットエラーで何らかの管理されていないエンティティを投げると思われます。
解決
アップデート:
より良い方法は、生成されたフィールドで実際にシーケンス戦略を指定し、カスタムシーケンスクラスを指定することです。
JPAは、新しいオブジェクトを挿入するたびに、このクラスのNextID()メソッドを呼び出します。
この方法により、各エンティティに手動で介入することなく、完全なグラフを持続させることができます。
理解した。驚くほど複雑;) - キーフィールドからGenatedValueアノテーションを削除するだけです。
SSNや電子メールなどのネイティブIDを対象としていますが、ソースに関係なく機能します。
@Entity
public class Client{
@Id
@Column(name="CLNT_ID")
private long key;
@Column(name="CLNT_NUM")
private String clientNumber;
...
}
所属していません StackOverflow