删除的对象将通过级联重新保存(从关联中删除删除的对象) [英] Deleted object would be re-saved by cascade (remove deleted object from associations)

查看:36
本文介绍了删除的对象将通过级联重新保存(从关联中删除删除的对象)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下两个实体:

1- 播放列表:

@OneToMany(fetch = FetchType.EAGER, mappedBy = "playlist", orphanRemoval = true, cascade =   CascadeType.ALL)
@OrderBy("adOrder")
private Set<PlaylistadMap> PlaylistadMaps = new HashSet<PlaylistadMap>(0);

  • CascadeType.ALL:在保存或更新播放列表实体时需要保存和更新 PlaylistadMap 集合.
  • orphanRemoval = true:删除播放列表实体时需要,PlaylistadMap 引用也应删除.
    • CascadeType.ALL: is needed for save and update on the PlaylistadMap collection when saving or updating the playlist entity.
    • orphanRemoval = true: is needed when deleting the playlist entity, the PlaylistadMap references should be deleteed too.
    • 2- 播放列表地图:

      @ManyToOne(fetch = FetchType.EAGER)
      @JoinColumn(name = "fk_playlist", referencedColumnName = "pkid", nullable = false)
      private Playlist playlist;
      

      当使用 getCurrentSession().delete(); 删除播放列表时,我收到以下异常:

      when deleting a playlist by using getCurrentSession().delete(); i am getting the following exception:

      org.springframework.dao.InvalidDataAccessApiUsageException: deleted object would be re-saved by cascade (remove deleted object from associations): [com.xeno.advertisingsuite.web.domain.PlaylistadMap#6]; nested exception is org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [com.xeno.advertisingsuite.web.domain.PlaylistadMap#6]
          at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:657)
          at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:793)
          at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:664)
          at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
          at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
          at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
          at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
          at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
          at $Proxy54.deletePlayList(Unknown Source)
          at com.xeno.advertisingsuite.web.beans.PlayListBean.deletePlaylist(PlayListBean.java:282)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
          at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
          at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
          at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
          ... 103 more
      Caused by: org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [com.xeno.advertisingsuite.web.domain.PlaylistadMap#6]
          at org.hibernate.impl.SessionImpl.forceFlush(SessionImpl.java:1220)
          at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:188)
          at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
          at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
          at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:677)
          at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:669)
          at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:252)
          at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
          at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)
          at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
          at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)
          at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)
          at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)
          at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)
          at org.hibernate.engine.Cascade.cascade(Cascade.java:161)
          at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:154)
          at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:145)
          at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:88)
          at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
          at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
          at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
          at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
          at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)
      

      请告知如何修复此异常.

      please advise how to fix this exception.

      推荐答案

      FetchType改为Lazy

      这篇关于删除的对象将通过级联重新保存(从关联中删除删除的对象)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆