2

Order と Item があるデータベース (JPA 2 Eclipselink) があります。各注文には多くのアイテムを含めることができ、各アイテムは 1 つの注文にのみ割り当てることができます。これは一方向の関係です。

注文エンティティ:

@Entity
public class Order implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
}

Item エンティティには次のものがあります。

@Entity
public class Item implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @ManyToOne
    Order o;
}

しかし、注文がデータベースから削除された場合、それを参照しているすべてのアイテムが削除されるように設定するにはどうすればよいでしょうか? 一方向の関係で可能ですか、または双方向を作成して @OneToMany(cascade=remove) を Order Entity Class に入れる必要がありますか? またはそれを一方向に保ちますが、所有側は注文になり、アイテムエンティティから注文への参照を削除しますか?

4

1 に答える 1

3

質問で提案したように、関連付けを双方向にしてカスケードを追加するか、注文にリンクされているすべてのアイテムを明示的に削除し (JPQL 削除クエリを使用するか、それらを検索してから削除します)、削除します。オーダー。

この場合、双方向の関連付けは理にかなっています。おそらく、コード内の他のいくつかの場所で、双方向の関連付けの恩恵を受けるでしょう。

于 2013-02-17T14:38:34.380 に答える