2

他のエンティティの主キーを持つ別のエンティティ A との Join 列を持つエンティティ B を作成しようとしています。エンティティ A にない値でエンティティ B を作成すると、例外が発生しません。これはJPAによって自動的に処理されるべきではありませんか?

エンティティのコード スニペット:

 @Entity
    public class A{

        @Id
        @Column(name="ORIGIN_ID")
        private long id;
        ...

        @OneToMany(mappedBy="aBean",cascade = CascadeType.PERSIST)
        private List<B> bList;
    }


    @Entity
    public class B{
        @Id
        private long id;
        ...

        @ManyToOne(cascade=CascadeType.MERGE)
        @JoinColumn(name="ORIGIN_ID")
        private A aBean;
    }
4

1 に答える 1

0

あなたは関係の管理について言及しています。JPA仕様には、例外をスローする必要があることを覚えているものは何もありません(ユーザーが一貫性のない関係情報を渡したため)。すべての JPA 実装には、状況に対する独自の処理があります。リレーションの所有者側にあるものだけを保持するものもあります。他のものは、最初に遭遇したものに基づいて存続します。その他には、そのようなものを検出してユーザーにフラグを立てるためにオンにできるオプションの処理があります

最も簡単なアドバイスは、双方向の関係を使用する場合です。両側が一貫していることを確認してください。

于 2014-09-22T07:48:18.433 に答える