今天在做项目时遇到点小麻烦,用Sping注入SessionFactory时报错了:
No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
解决方法:出于安全考虑数据库里访问方法我一般都设为了protected,但在Spring2.5文档里发现了这样一段话:
方法的可见度和 @Transactional
在使用代理的时候,@Transactional
注解应该只被应用到 public 可见度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Transactional
注解,系统也不会报错, 但是这个被注解的方法将不会执行已配置的事务设置。如果你非要注解非公共方法的话,请参考使用AspectJ .
然后直接将访问修饰符改为了public OK解决!
spring配置文件如下:
数据访问基类(GenericDao)代码如下: