一尘不染

删除的实体传递给持久异常

hibernate

我有这种实体:

文件| 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级联,但仍然是同样的问题。


阅读 198

收藏
2020-06-20

共1个答案

一尘不染

解:

  • @ManyToOne关系中有一个CascadeType.REMOVE!删除了。

为什么要这样解决?

  • 如果要删除一个孩子,则一定不要删除其父对象,因为可能还有其他与此孩子相关的孩子。
2020-06-20