日期:2014-05-17  浏览次数:20681 次

JPA使用中级联删除,出现了异常
严重: Servlet.service() for servlet default threw exception
org.hibernate.ObjectDeletedException: deleted entity passed to persist: [net.aykj.pojo.Expert#<null>]
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:113)
at org.hibernate.impl.SessionImpl.firePersistOnFlush(SessionImpl.java:672)
at org.hibernate.impl.SessionImpl.persistOnFlush(SessionImpl.java:664)
at org.hibernate.engine.CascadingAction$9.cascade(CascadingAction.java:346)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:292)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:240)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:193)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:320)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:266)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:243)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:193)
at org.hibernate.engine.Cascade.cascade(Cascade.java:154)
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:49)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
------解决方案--------------------
 在更新一对多关系对象中的一的一方,如果涉及到多的一方,特别是要删除多的一方的某些对象,
 
 
 
则必须要先从集合中剔除,然后断开关系,最后删除

------解决方案--------------------
http://blog.sina.com.cn/s/blog_a2de16f4010150ns.html
参考下吧,1楼的估计是copy这的