我有这种实体:
文件| n ..至..1 | DocumentType | 1 ..至.. n | PropertyType | 1 ..至.. n | 文件属性
我只是尝试删除一个文档,例如:entityManager.remove(document);
但触发错误:
16:45:51,499错误[[Seam Resource Servlet]] Servlet的Servlet.service()Seam Resource Servlet引发了异常javax.persistence.EntityNotFoundException:已删除的实体传递给持久性:[up.docstore.PropertyType#]
问题似乎出在这里:
@OneToMany(mappedBy = "documentType", cascade = {CascadeType.ALL}, fetch = FetchType.EAGER) @ForeignKey(name = "FK_DOCUMENT_TYPE__PROPERTY_TYPE") @Sort(type = SortType.NATURAL) private SortedSet<PropertyType> propertyTypes = new TreeSet<PropertyType>();
如果我删除CascadeType.PERSIST,那么一切正常。但是我在那里需要它,而且我也急切需要它。
有人知道其他解决方案吗?
编辑 :删除了DELETE_ORPHAN级联,但仍然是同样的问题。
解:
@ManyToOne关系中有一个CascadeType.REMOVE!删除了。
为什么要这样解决?
如果要删除一个孩子,则一定不要删除其父对象,因为可能还有其他与此孩子相关的孩子。