删除的对象将通过级联重新保存(从关联中删除删除的对象)

2024-01-01

我有以下两个实体:

1- 播放列表:

@OneToMany(fetch = FetchType.EAGER, mappedBy = "playlist", orphanRemoval = true, cascade =   CascadeType.ALL)
@OrderBy("adOrder")
private Set<PlaylistadMap> PlaylistadMaps = new HashSet<PlaylistadMap>(0);
  • 级联类型.ALL:保存或更新播放列表实体时需要在 PlaylistadMap 集合上进行保存和更新。
  • 孤儿移除 = true:删除播放列表实体时需要,PlaylistadMap引用也应该删除。

2- 播放列表地图:

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

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

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)

请告知如何解决此异常。


解决方案是严格执行异常消息告诉您的操作:

引起原因:org.hibernate.ObjectDeletedException:已删除的对象将通过级联重新保存(从关联中删除已删除的对象)

从它所在的关联(集合、列表或映射)中删除已删除的对象。特别是,我怀疑,PlayList.PlaylistadMaps。仅仅删除对象是不够的,您必须将其从引用它的任何级联集合中删除。

事实上,既然你的收藏已经orphanRemoval = true,您不需要显式删除它。您只需将其从集合中删除即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除的对象将通过级联重新保存(从关联中删除删除的对象) 的相关文章

随机推荐

  • 如何在 Laravel 中将变量传递给服务提供者?

    我想在侧边栏中生成一个动态菜单并与 Laravel 5 1 中的所有视图共享 like Marks Module Langosh Topic Content 1 Content 2 Nitzsche Topic Content 3 Rolf
  • 我怎样才能制作一个水平选择器?

    我想为我的应用程序制作一个水平选择器 但我对这一切还很陌生 有人可以提供一个易于遵循的指南来指导我如何做到这一点吗 最好的方法是伪造你自己的使用UIScrollView启用分页 实际上相当简单 将滚动视图与您自己的自定义图形视图重叠
  • 用最顶层的括号分割字符串

    我有一个如下所示的字符串 1 2 3 我想对其进行正则表达式以获得以下数组 1 2 3 另一个例子 asd dfg asd bdfg asdf asd gt asd dfg asd bdfg asdf asd 我试图搜索如何执行这样的正则表
  • Javascript Uncaught Reference 错误 函数未定义

    检查小提琴 http jsfiddle net vSHQD 查看故障发生情况 当我将数据 即使我将其留空 添加到文本框并尝试单击 添加 时 它不会执行任何操作 打开 Chrome 和 Firefox 控制台都会给我同样的错误 它说 chan
  • 如何在android中设置适合所有屏幕的壁纸,无需拉伸、缩放和裁剪

    注意 请不要将其标记为重复 因为几年前就曾提出过同样的问题 这在当时可能有效 但现在不起作用 使用下面的代码 我的壁纸要么拉伸到屏幕 2 和 3 要么根据设备在屏幕底部裁剪 以下代码适用于三星设备 但不适用于其他制造商的设备 我还尝试使用以
  • symfony2 orm 学说中与额外字段的多对多关系

    嗨 我有与这里相同的问题 与额外字段的多对多自关系 https stackoverflow com questions 9134856 many to many self relation with extra fields但我找不到答案
  • 如何在 Fragment 中使用 SharedPreferences 保存数据

    我在永久保存数据时遇到问题 它应该很简单 我将数据发送到另一个片段并且它工作得很好 但是 我不知道如何保存数据 我尝试了一些事情 但我想知道你是否可以帮助我 在我的代码中 我通过按下按钮将数据发送到另一个片段 这是代码 包 com exam
  • 如何删除 Flex 4 TextArea 组件的边框(spark 主题光环)

    使用 Flex 3 SDK 您只需将 borderThickness 样式设置为 0 或将 borderStyle 设置为 none 对于 Flex 4 SDK 和 Spark 主题 这没有效果 尝试类似的方法 borderVisible
  • 删除目录中的内容时出错 - Domain=NSCocoaErrorDomain Code=4 | Domain=NSPOSIXErrorDomain Code=2“没有这样的文件或目录”

    运行下面的代码时如何修复以下错误 我已经在 SO 中搜索过 但找不到 Swift 3 的任何内容 Delete all files in given directory let path NSSearchPathForDirectories
  • 在 Sitefinity API 中为文件系统上已存在的文档创建文件

    我正在使用 Sitefinity 作为 Visual Studio 2012 中的解决方案 我使用的是 64 位计算机 我刚刚安装了 Windows Identity Manager 因为在此之前我收到了另一个错误 这与未安装该错误有关 现
  • 每页都有 Jekyll 分页

    据我们所知 Jekyll 默认分页仅支持 index html 我想创建 blog html 包含分页 有什么解决办法吗 如果您创建一个名为 blog并放置一个index html文件里面 然后你可以添加一个设置 config yml说的是
  • PHPUnit - 当 dataProvider 返回空数组时不要失败

    我有一个 PHPUnit 测试 它使用 dataProvider 数据提供者检查文件系统中的某些文件 但是 我在不同的环境中使用此测试 这意味着文件可能不存在 这意味着 dataProvider 没有找到任何内容 并且测试未执行 这会导致测
  • 将多维 PHP 数组传递给 javascript

    我有一个数组 my array 看起来像 array 2 25 gt int 10 30 gt int 8 我想将它分配给一个 javascript 数组 但我很难做到这一点 有什么建议么 编辑 起初 我以为我可以像字符串一样分配它 但这不
  • 高效的最长公共子序列算法库?

    我正在寻找一种 空间 高效的 LCS 算法实现 以便在 C 程序中使用 输入是两个随机访问整数序列 我目前正在使用关于 LCS 的维基百科页面上的动态编程方法 然而 这在内存和时间上有 O mn 的行为 并且对于较大的输入来说会因为内存不足
  • ZendFramework 2 中的控制器特定布局

    我的 zendframework 2 应用程序中有一个模块 其中包含两个控制器 我想为控制器的其中一个操作设置不同的布局 有没有办法在模块配置文件中设置它 P s 我只是尝试使用以下命令将其设置在控制器的 CONSTRUCT 方法内 但它不
  • 在 Material UI 中,我们何时使用 Input 与 TextField 来构建表单?

    也许这只是一个基本问题 但到目前为止还没有找到任何合理的解释 我是 React 的初学者 最近正在使用 Material UI 我不太清楚何时使用输入和何时使用输入Textfield用于构建表单 看文档感觉是TextField是什么的超集I
  • 尝试刷新令牌后,令牌被取消验证

    我将 Symfony 环境从 3 3 更新到 4 0 更新后 我的登录出现问题 数据库提供的用户 当我提交登录表单时 我直接返回到登录表单 没有任何错误消息 当我使用无效凭据时 我收到了相应的错误消息 这是尝试登录后的日志 使用 in me
  • 是否可以操作 CMDIFrameWndEx 的 CMFCMenuBar 的菜单?

    我的主框架有一个 CMFCMenuBar 成员 其中包含当前文档类型的菜单 我想动态添加 删除子菜单 例如 如果用户选择显示地图窗格 我想在 文件 菜单旁边添加一个地图子菜单 反之亦然 如果地图窗格关闭 我也想删除地图菜单项 一件可行但我不
  • Android:放置后,被拖动的editText消失

    我正在尝试创建一个用户可以在其中移动输入的表单 我有一个 editText 并希望它能够将其移动到我的relativeLayout 中的新位置 我可以捡起它并移动它 但一旦我放手 它就会完全消失 我已经尝试了几乎所有的方法 我认为 onDr
  • 删除的对象将通过级联重新保存(从关联中删除删除的对象)

    我有以下两个实体 1 播放列表 OneToMany fetch FetchType EAGER mappedBy playlist orphanRemoval true cascade CascadeType ALL OrderBy adO