严重: 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)

解决方案 »

  1.   

    这个我也知道啊,我配置一对多关系里边全是ALL的, 不应该啊
      

  2.   

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

  3.   

    帖子我看了好多了,就是搞不定我的这个,我里边关系有些多,一个表关联了好多的SET
      

  4.   

    Expert article = expertDAO.queryById(id);
    if(article != null) {
    String picture = article.getPicture();
    String videoPath = article.getVideoPath();
    Set<ExpertMessage> expertMessages=article.getExpertMessages();
    Set<WorkTime> workTimes=article.getWorkTimes();
    Set<OnlineBook> onlineBooks=article.getOnlineBooks();
    Set<ExpertPicture> expertPictures=article.getPictures();
    for(ExpertMessage e:expertMessages){
    //article.getExpertMessages().remove(e);
    e.getExpert().getExpertMessages().remove(e);
    expertMessageDAO.remove(ExpertMessage.class, e.getId());
    }
    for(OnlineBook e:onlineBooks){
    //article.getOnlineBooks().remove(e);
    e.getExpert().getOnlineBooks().remove(e);
    onlineBookDAO.remove(OnlineBook.class, e.getId());
    }
    for(ExpertPicture e:expertPictures){
    e.getExpert().getPictures().remove(e);
    expertPictureDAO.remove(ExpertPicture.class, e.getId());
    //article.getPictures().remove(e);
    }
    for(WorkTime e:workTimes){
    e.getExpert().getWorkTimes().remove(e);
    workTimeDAO.remove(WorkTime.class, e.getId());
    //article.getWorkTimes().remove(e);
    }

    expertDAO.remove(article);
    if(picture != null) {
    FileUtil.deleteFile(getFileBasePath() + picture);
    }
    if(videoPath != null) {
    FileUtil.deleteFile(getFileBasePath() + videoPath);
    }
    }
    各种删不掉,试各种方法啊