![](/img/trans.png)
[英]What should I prefer using JPA - pure SQL or JPQL and how to create/delete table using JPQL and Entity
[英]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 請求的列表)。
這樣做,由於BlogPost
和Tags
之間的關系,我有一個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.