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)我试图存储引用文件,但它是一个死胡同。
我该怎么做?