1

最初の CascadeType.Remove はオプションではありません。これは、クライアント側のデータベースがカスケード操作をサポートしていない可能性があるためです。

OrphanRemoval = true は @OneToXXX 関係のみを処理すると思います。

many-to-one関係はどうですか?

たとえば、次のmany-to-oneようなマッピングです。

public class Order{
    ....
    @ManyToOne
    private Customer customer;
    .....
}

Customer エンティティには、リレーションシップを一方向にする Order へのマッピングはありません。

では、どうすればよいremove all orders from a customer before removing that customerでしょうか。それを処理する簡単な自動方法はありますか、それともサービス層を介して明示的にコードを実装し、findOrdersByCustomer(long customer_id)それらを削除するようなものを呼び出す必要がありますか?

前もって感謝します。

4

1 に答える 1

2

はい、すべての注文を見つけて削除する必要があります。または、すべてを削除する JPQL クエリを実行することもできます。

delete from Order o where o.customer = :customer

CascadeType.REMOVE に関するあなたのメモは間違っていることに注意してください。カスケードを実行するのは JPA であり、データベースではありません。したがって、データベースが何であれサポートされます。

于 2012-10-01T21:50:17.880 に答える