私のWebアプリケーションは、Spring、Spring Data、JPA(Hibernate)、およびMS SQLサーバー上に構築されています。私は2つのクラス/テーブルを持っています(マスターとディテール)。 Hhereは、それらが関連付けられている方法です。Criteria APIを使用して詳細レコードを削除できません
Detail:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "master")
private Master master;
Master:
@OneToMany(mappedBy = "master", fetch = FetchType.LAZY,cascade = {CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.MERGE}, orphanRemoval = true)
private List<Detail> details;
は、私は、このような削除(id_of_Master_object)として削除し、通常の春のデータを介してマスターオブジェクトを削除した場合(およびそれに関連する詳細は、縦続オブジェクト)マスターオブジェクトを削除することができています。私は、このエラーの性質を理解
The DELETE statement conflicted with the REFERENCE constraint "FK_t7dg2y38t1ddm1lrq94cnpk3x". The conflict occurred in database "mydatabase", table "dbo.Detail", column 'master'.
:
は、今私はクライテリアAPIを介してマスタオブジェクトを削除するには、動的なクエリを構築する必要がある、私はエラーを得ました。修正は何ですか?上記のマッピングで何か間違っていますか?
データベースを再構築できません。アプリはすでに制作中です。可能であれば、データベースへの変更(例えば、テーブルの変更など)を避けたいと思います。
ありがとうございました!ここでは、このスレッドに来て誰のために
UPDATE
私の最終的な解決策が実装されている方法です。
Micheleが提案した「削除するすべてのマスターを照会する」の後に続きます。それはコレクションです。
repository.delete(the_collection)
この情報がお役に立てば幸いです。
ありがとう、ミシェル! – curious1