`
uule
  • 浏览: 6322781 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

No Hibernate Session bound to thread, and configuration does not allow creation

 
阅读更多

假设有以下类:

 

@Transactional
public class SubClass extends SuperClass {

	public void loadDb(){
//数据库操作
	}

}

public class SuperClass {

	public void savedb() {
//数据库操作
	}
}

 

savedb是父类的方法,loadDb是子类的方法。如果有以下调用:

 

	@Test
	public void test(){
		SubClass o = new SubClass();
		o.savedb();//将会报没有Session的错误
		o.loadDb();//正常
	}

 

可以看到在调父类方法时Hibernate报没有Session的错误(org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here),子类没有问题。

 

解决办法一:在子类中重载父类方法:

 

@Transactional
public class SubClass extends SuperClass {

	public void loadDb(){

	}

	@Override
	public void savedb() {
		super.savedb();
	}
}

这样显然繁琐了,子类savedb没有任何新操作。

 

 

解决方法二:在父类中标注@Transactional(父类是抽象类也可以):

 

@Transactional
public class SuperClass {

	public void savedb() {

	}

}

这需要父类的修改权限。

 

同时可以参考:

http://uule.iteye.com/admin/blogs/1948061

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics