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方法。