`
c_fanatic
  • 浏览: 66243 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

继承类的@Transactional---转

阅读更多
继承类的@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() {

}

}

这需要父类的修改权限。

--- http://www.cnblogs.com/xiefeifeihu/archive/2010/07/27/1785958.html
分享到:
评论
1 楼 piaoxue_x 2011-03-24  
嗯,很好,谢谢了。对我没什么,帮助,不过为了积分,啰嗦两句……

相关推荐

    后端 Java Spring Data Jpa @Transactional 介绍

    在Java后端开发中,Spring框架提供了强大的事务管理能力,特别是在使用Spring Data JPA时,`@Transactional`注解使得事务处理变得简单易用。这个注解是Spring框架中的核心部分,它允许开发者声明性地控制事务边界,...

    Spring声明式事务@Transactional知识点分享

    * 如果在类上使用 @Transactional 注解,那么该类中的所有方法都会继承该注解的属性。 * 如果在方法上使用 @Transactional 注解,那么该方法将覆盖类上的注解属性。 @Transactional 注解是 Spring 框架中实现声明式...

    Spring中@Transactional事务回滚(含实例

    `@Transactional`是Spring提供的一个注解,用于在方法级别或类级别定义事务属性,如事务的传播行为、隔离级别、读写模式以及超时设置。当一个方法被标记为`@Transactional`时,Spring会自动管理事务的开始、提交或...

    什么情况会导致@Transactional事务失效?

    如果抛出的是检查异常(继承自Exception的非RuntimeException),则需要在@Transactional注解中明确指定`rollbackFor`属性。 9. **数据库驱动限制**:某些数据库驱动不支持自动提交事务,需要手动关闭自动提交。...

    浅谈Spring中@Transactional事务回滚及示例(附源码)

    浅谈Spring中@Transactional事务回滚及示例 @Transactional是Spring Framework中的一种事务管理机制,用于管理数据库事务。它可以使得数据库操作更加安全和可靠。本文将详细介绍@Transactional的使用场景、checked...

    Spring源码学习十二:@Transactional是如何工作的1

    通过上图中的关系,可以发现 InfrastructureAdvisorAutoProxyCreator 间接实现了 BeanPostProcessor 接口,从 AbstractAutoProxyCreator 类中继承了 postProcessAfterInitialization 方法。Spring 容器在初始化每个...

    spring的@Transactional注解用法解读

    默认回滚规则是所有未检查异常(继承自`RuntimeException`的异常)和`Error`都会触发回滚,而检查异常(不继承自`RuntimeException`的异常)不会。 3. **编程式事务管理** 使用`TransactionTemplate`或直接操作`...

    transactional-oop:Java OOP

    而"transactional-oop:Java OOP"这个主题则涉及到将事务处理的概念与面向对象编程相结合的技术。 事务是数据库操作的基本单位,它确保一组操作要么全部成功,要么全部失败,以维护数据的一致性和完整性。在Java中,...

    java事务 - 使用注解

    - **异常处理**:`@Transactional`注解默认仅在方法抛出未检查异常(继承自`RuntimeException`的异常)时回滚事务。如果抛出受检异常(继承自`Exception`的非`RuntimeException`),需要显式设置`rollbackFor`属性。...

    spring注解事务实现demo

    默认情况下,如果在`@Transactional`方法中抛出未检查异常(继承自`RuntimeException`的异常)或者`Error`,Spring会自动回滚事务。如果抛出的是受检异常(非`RuntimeException`),则需要显式设置`rollbackFor`属性...

    Spring事务管理A方法内部调用B方法的回滚问题测试代码

    对于已检查异常(继承自Exception的非RuntimeException),除非显式声明`@Transactional(rollbackFor = Exception.class)`,否则Spring默认不会回滚事务。 通过这样的设置,我们可以在A方法内部调用B方法时确保事务...

    java springAOP 事务+注释

    提供的`MySpring`可能是一个自定义的Spring配置或工具类,它可能包含了设置事务管理器、扫描带有`@Transactional`注解的bean等配置。使用时,只需将`MySpring`引入到Spring应用上下文中,即可启动Spring AOP和事务...

    spring05-6

    1. **启用事务管理**:在Spring配置文件中,需要配置事务管理器,例如对于JDBC,可以使用`PlatformTransactionManager`的实现类`DataSourceTransactionManager`。 2. **添加@Transactional注解**:在业务逻辑方法上...

    在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通

    创建一个接口继承自`JpaRepository`,这个接口将提供基本的CRUD操作。如果你需要自定义SQL查询,可以扩展`JpaSpecificationExecutor`接口。 7. **编写业务逻辑** 在Spring Boot的控制器类中注入Repository接口,...

    10-Spring-事务管理1

    在类级别应用时,所有公共方法都将继承该事务属性。推荐只在公共方法上使用此注解,以避免非预期的行为。Spring建议不要在接口或接口方法上使用,因为AOP代理无法正确处理这些情况。 6. **Spring事务回滚机制** ...

    Spring Boot数据库事务控制.zip

    3. **事务回滚规则**:默认情况下,如果在@Transactional注解的方法中抛出未检查异常(继承自RuntimeException的异常)或者Error,Spring会自动回滚事务。对于受检查异常(非RuntimeException),需要显式地声明需要...

    spring基于注解实现事务

    对于受检查异常(继承自Exception的非运行时异常),默认情况下事务不会回滚,除非在@Transactional中显式指定。 - 如果在方法内部捕获了异常并处理,事务可能不会回滚,除非在finally块中显式抛出异常或使用Spring...

    Spring事务不生效.pdf

    但是,对于使用@Transactional注解的方法,如果被final修饰,Spring无法通过继承来创建代理类,因此事务管理也就无法正常工作。要避免这种情况,应避免在事务方法上使用final关键字。 3. 异常处理不当: Spring事务...

    spring基于AspectJ实现事务控制

    默认情况下,如果方法抛出未检查异常(继承自`RuntimeException`的异常)或`Error`,事务将被回滚;否则,事务将在方法正常结束时提交。 3. **事务属性**:`@Transactional`注解还支持一些可选属性,如`propagation...

    Spring 事务开发代码文件

    主要通过`@Transactional`注解实现,标注在类或方法上,声明该类或方法需要在事务环境中执行。这种方式降低了代码的复杂性,提高了可维护性。`springboot.tx`文件中可能包含带有`@Transactional`注解的Service层或...

Global site tag (gtag.js) - Google Analytics