浏览 3368 次
锁定老帖子 主题:spring与hibernate 集成
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-02
public ExamQuestionEx getInitialed(Integer quesId) { ExamQuestionEx q = new ExamQuestionEx(); String hql = "from ExamQuestionEx where id = ? "; /*List<ExamQuestionEx> list = this.getHibernateTemplate().find(hql,quesId); if(list!=null&&list.size()>0){ q = list.get(0); }else{ return null; }*/ q = (ExamQuestionEx) this.getSession().get(ExamQuestionEx.class, quesId); if(!Hibernate.isInitialized(q.getAnswers())){ Hibernate.initialize(q.getAnswers()); } if(!Hibernate.isInitialized(q.getOptions())){ Hibernate.initialize(q.getOptions()); } return q; } 用 List<ExamQuestionEx> list = this.getHibernateTemplate().find(hql,quesId); if(list!=null&&list.size()>0){ q = list.get(0); }else{ return null; }
替换 q = (ExamQuestionEx) this.getSession().get(ExamQuestionEx.class, quesId);
会报错 org.hibernate.HibernateException: collection is not associated with any session
上述方法为dao层方法。 spring的配置为: <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED"/> <tx:method name="send*" propagation="REQUIRED"/> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="create*" propagation="REQUIRED"/> <tx:method name="del*" propagation="REQUIRED"/> <tx:method name="remove*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="get*" propagation="SUPPORTS" read-only="true"/> <tx:method name="search*" propagation="SUPPORTS" read-only="true"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="affectMethods" expression="execution(* com.buisoft.eit.service.impl.*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="affectMethods"/> </aop:config>
事务指向到service方法。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-03-02
你的配置没有把延迟加载去了,加一个lazy=false就好了,要不等你调用的时候session已经被销毁了,list.get(0)从session里自然找不到东西了
|
|
返回顶楼 | |