微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hibernate ObjectDeletedException ManyToMany

如何解决Hibernate ObjectDeletedException ManyToMany

我有一个具有多对一关系的实体(One Usuario/Many Gestionar),而 Gestionar 实体内部有另一个 ManyToOne...这就是我处理多对多关系的方式。我不知道如何删除Gestionar 而不是消除实体 Incidencia。

线程“main”org.hibernate.ObjectDeletedException 中的异常:已删除的对象将通过级联重新保存(从关联中删除删除的对象):[gestionDeIncidencias.persistencia.Gestionar#1] 在 org.hibernate.internal.SessionImpl.forceFlush(SessionImpl.java:1139) 在 org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:182) 在 org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:114) 在 org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 在 org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:641) 在 org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:633) 在 org.hibernate.engine.spi.CascadingAction$5.cascade(CascadingAction.java:259) 在 org.hibernate.engine.internal.Cascade.cascadetoOne(Cascade.java:380) 在 org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) 在 org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) 在 org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:409) 在 org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:350) 在 org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326) 在 org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) 在 org.hibernate.engine.internal.Cascade.cascade(Cascade.java:165) 在 org.hibernate.event.internal.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:160) 在 org.hibernate.event.internal.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:151) 在 org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:88) 在 org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51) 在 org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1127) 在 org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:325) 在 org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101) 在 org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175) 在 gestionDeIncidencias.dao.GenericDAO.borrar(GenericDAO.java:48) 在 gestionDeIncidencias.modelo.Principal.borrarUsuarioPorDni(Principal.java:348) 在 gestionDeIncidencias.modelo.Principal.tratarSubmenuUsuario(Principal.java:127) 在 gestionDeIncidencias.modelo.Principal.tratarMenuPrincipal(Principal.java:75) 在 gestionDeIncidencias.modelo.Principal.main(Principal.java:37)

解决方法

处理多对多的时候,可以通过获取关联实体的id来删除其他关联实体,所有这一切都构建了一个hquery:

createQuery("DELETE FROM entidad where papa=:father").setParameter("father",fatherId); // This is for delete the child's or related entities to another.

“fatherId”应该是与您要删除的实体相关的实体的 ID。

Here 您可以找到有关如何创建 hql 查询的官方教程。

我希望我能很好地表达自己。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。