1

私はエンタープライズアプリケーションにJPA2を使用していますが、私のDBAはひねりを加えただけです。

彼らは私がすべてのテーブルにグループの一元化されたオブジェクトIDジェネレーターを使用することを望んでいます。つまり、テーブル値やシーケンステーブルを使用するのではなく、Webサービスを呼び出して最大50個のIDのバッチを取得する必要があります

次に、新しいオブジェクトを永続化するときに、最初にこのIDを挿入し、それをテーブルに保存する必要があります。

では、これを処理するためにエンティティの@Id列をどのように操作しますか。

持続する前にキーを設定するのと同じくらい簡単ですか?IDセットエラーのある種類のアンマネージエンティティがスローされるのではないかと思います。

4

1 に答える 1

1

アップデート:

より良い方法は、生成されたフィールドで実際にシーケンス戦略を指定し、カスタムシーケンスクラスを指定することです。

JPAは、新しいオブジェクトを挿入するたびに、このクラスのnextId()メソッドを呼び出します。

この方法では、各エンティティに手動で介入することなく、完全なグラフを永続化できます。


理解した。驚くほど複雑です;)-キーフィールドからGeneratedValueアノテーションを削除するだけです。

これは、SSNや電子メールなどのネイティブIDを対象としていますが、ソースに関係なく機能します。

@Entity
public class Client{

    @Id
    @Column(name="CLNT_ID") 
    private long key;
    @Column(name="CLNT_NUM")
    private String clientNumber;
...
}
于 2010-08-25T18:02:20.803 に答える