有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Hibernate中删除子对象时出现java问题“已删除的对象将通过级联重新保存”

我有以下两个实体:

1-交易

@OneToMany(cascade=CascadeType.ALL,mappedBy = "deal", fetch = FetchType.EAGER)
@Fetch( FetchMode.SELECT)
private List<DealCheckList> dealCheckList;

2-交易清单

@JoinColumn(name = "DEAL_ID", referencedColumnName = "DEAL_ID", insertable = false, updatable = false)
@ManyToOne(fetch = FetchType.LAZY)  
private Deal deal;

删除子对象时,即使用

.......
.......  
transaction = session.beginTransaction();

Deal deal = (Deal) session.createCriteria(Deal.class)
                          .add(Restrictions.eq("dealId",  dealId)).uniqueResult();         

for(DealCheckList checklist : deal.getDealCheckList()){                        
            session.delete(checklist);
 }
transaction.commit();

我得到下面的错误

Caused by: org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations):

请帮忙


共 (1) 个答案

  1. # 1 楼答案

    您需要从清单中删除清单对象。 您的DealCheckList列表中有“cascade all”,因此如果其中有对象,它将自动保存

    错误信息非常清楚:“从关联中删除已删除的对象”