0
我擁有其他文檔引用的文檔。我將這個連接存儲在實體中。JPA - 從@ManyToMany自身刪除實體
@Entity
public class Document extends AbstractEntity {
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinTable(name = "DREF", joinColumns =
@JoinColumn(name = "DOCID", referencedColumnName="ID"), inverseJoinColumns =
@JoinColumn(name = "REFBYDOCID", referencedColumnName="ID"))
private Set<Document> referencedBy = new HashSet<Document>();
}
但我在嘗試刪除時遇到問題。
例如:當Doc1被Doc2引用時,我不能刪除Doc2。
爲此,我必須從其他文檔referencedBy集中移除Doc2。但是我無法從Doc2中獲得這些文檔的參考。
1)我試圖寫一個方法來獲取引用,但我做不到。
public synchronized Document getReferencedDocuments(Integer Id) {
EntityManager em = getEntityManager();
try {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Document> cq = cb.createQuery(Document.class);
Root<Document> e = cq.from(Document.class);
????
Query q = em.createQuery(cq);
return q.getResultList();
} finally {
em.close();
}
}
2)我試圖存儲引用文件,但它是一個死衚衕。
我該怎麼做?