簡體   English   中英

如何使用 JPQL 刪除 ManyToMany 項目?

[英]How to delete a ManyToMany item using JPQL?

我有兩個模型,比如說:

BlogPost(title, message)
Tags(name)

兩者都定義了多對多關系。

使用 JPQL,我使用以下查詢刪除了BlogPost列表:

DELETE FROM BlogPost b WHERE b IN :list

(:list 是來自先前 SELECT 請求的列表)。

這樣做,由於BlogPostTags之間的關系,我有一個ConstraintViolationException

有沒有辦法在不使用 JPQL 刪除標簽的情況下刪除關系?

謝謝你的幫助!

在刪除實體之前,您必須先刪除關聯。

JPA 創建一個表 BlogPost_Tags 存儲 BlogPost 的 ID 和標簽。

因此,當您嘗試刪除 BlogPost 時,BlogPost_Tags 上的約束失敗。

刪除 Post 之前需要先刪除關系,JPQL 中沒有簡單的方法,必須使用 EntityManager。

我會用我提出的解決方案來回答自己。 我不確定它是不是最好的,但至少它有效。

由於您要批量刪除具有 ManyToMany 相關項目的內容,因此您首先必須刪除關系(在連接表中),或者執行循環並為每個項目手動刪除(瘋狂且過於繁重)。

因此,由於 JPQL 不允許這樣做,一種可能的方法是進行原生 SQL 查詢以刪除相關表中所需的 id,然后進行批量刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM