city和block的关系为一对多,在block中有外键cityid我在做查询的时候(查block)出现了
block.getcity()不是null,但是((City)block.getcity()).getCityID等于null的情况,这是为什么?另外在这种情况下我执行了删除block的操作,报错,错误信息为:exception'message:com.syswin.crm.base.dao.TCity; nested exception is org.hibernate.TransientObjectException: com.base.dao.TCity
org.springframework.dao.InvalidDataAccessApiUsageException: com.base.dao.TCity; nested exception is org.hibernate.TransientObjectException: com.base.dao.TCity
Caused by: org.hibernate.TransientObjectException: com.base.dao.TCity
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:216)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:108)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:220)
at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:476)
at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:2803)
at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:467)
at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:190)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:113)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
at org.springframework.orm.hibernate3.SpringSessionSynchronization.beforeCommit(SpringSessionSynchronization.java:126)
at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:48)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:821)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:637)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:624)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:307)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:117)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at com.syswin.crm.common.log.LogInterceptor.invoke(LogInterceptor.java:12)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:616)
请高手帮忙

解决方案 »

  1.   

    这个问题解决了吗 ?谁能告诉我解决的方法? [email protected]
      

  2.   

    应该是spring里事物传播特性又问题,    
      

  3.   

    配置问题吧,block里面配置了city的多对一属性吗
      

  4.   

    在many-to-one标签中加上not-found="ignore"试试,我之前也碰到过同样的问题,是这样解决的.
      

  5.   

    我加了not-found="ignore"也不管用,谁还知道其他的解决办法啊,我都折腾了一天了