外出旅行、冬季保暖得常备户外袜、速干袜、加厚袜子哦。

猛戳乐途驿站http://zhoupa1188.taobao.com抢购品牌男女式加厚户外袜子,coolmax、全棉、保暖、吸汗、速干、登山、徒步袜子。满10包邮


谢炜的cnblogs

CSDN上比较完整:http://hi.csdn.net/xiefeifeihu

导航

继承类的@Transactional: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(){
//数据库操作
	}

}

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() {

	}

}
这需要父类的修改权限。

posted on 2010-07-27 13:45  飞飞狐  阅读(4491)  评论(1编辑  收藏  举报

外出旅行、冬季保暖得常备户外袜、速干袜、加厚袜子哦。

猛戳乐途驿站http://zhoupa1188.taobao.com抢购品牌男女式加厚户外袜子,coolmax、全棉、保暖、吸汗、速干、登山、徒步袜子。满10包邮