質問

私はエンタープライズアプリケーションに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;
...
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top