在用Hibernate的时候出现下面异常
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.lgyw.emg.entity.Department
at grails.orm.HibernateCriteriaBuilder.invokeMethod(HibernateCriteriaBuilder.java:1163)
at com.cn.service.TransportEnterpriseService.search(TransportEnterpriseService.groovy:23)
at com.cn.service.TransportEnterpriseService$$FastClassByCGLIB$$55d33b3b.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at com.cn.service.TransportEnterpriseService$$EnhancerByCGLIB$$563ce738.search(<generated>)
at com.cn.service.TransportEnterpriseService$search.call(Unknown Source)
at com.cn.entity.TransportEnterpriseController$_closure2.doCall(TransportEnterpriseController.groovy:39)
at com.cn.entity.TransportEnterpriseController$_closure2.doCall(TransportEnterpriseController.groovy)
at org.grails.plugin.resource.DevModeSanityFilter.doFilter(DevModeSanityFilter.groovy:44)
at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:359)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:275)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:344)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:272)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:81)
at java.lang.Thread.run(Thread.java:619)
这个异常的意思是,在一对多或者多对多的时候出现,关于这个问题网上的解答一大堆,也就是级联操作归谁管的问题。但是,对于我却没多大帮助,因为我本来只是一个查询语句,根本没有调用save()啊,找了很久的原因,最后终于启动系统的时候已经加载了一部分数据进入内存,然后在实时查询的时候,这个内存中的数据和现有的数据不对应,然后hibernate会认为数据发生了改变,然后通过持久化对象写入数据库中,继而引发一条save语句。