`

使用@Async注解是hibernate中抛出LazyInitializationExceptions

阅读更多

项目中有一个需求:批量产生一批数据,并存放在数据库中,并产生文件供下载。根据需求很容易想到@Async注解,但当注解加到service层的方法上时,却会抛出org.hibernate.LazyInitializationException。

项目使用spring3.1 和hibernate3.3.2GA,再经过各种谷歌之后终于找到原因,原因参考这里,具体是因为hibernate中session的范围问题。具体解决方法如下:

 

@Service
public class AsyncServiceImpl implements AsyncServiceInt{

@Autowired private SlowProcess slowProcess;

@Override
@Async
public void startSlowProcess(Integer scenarioId) {
    slowProcess.execute(param);
}

..

public class SlowProcess {

   @Transactional
   public double[] execute() { .. }

}

 此解决方法来自:http://stackoverflow.com/questions/17278385/spring-async-generates-lazyinitializationexceptions

 

分享到:
评论

相关推荐

    Hibernate_Demo

    Hibernate抛出的异常通常继承自JDBC的SQLException,如ConstraintViolationException(违反约束),StaleObjectStateException(过时对象状态)等,需要正确捕获并处理。 通过【Hibernate_Demo】项目,开发者可以...

    spring Hibernate整合源代码

    9. **错误和异常处理**:Spring提供了一致的异常处理机制,将Hibernate抛出的数据库异常转换为业务友好的异常类型。 在提供的压缩包文件名称列表中,我们可以看到"Spring_2600_Registration_4"、"Spring_2300_...

    springboot-transaction事务

    - 事务管理器(Transaction Manager):在Spring Boot中,如果检测到JPA或Hibernate,将会自动配置一个`PlatformTransactionManager`实例。 2. **JPA集成** - JPA是Java提供的ORM(Object-Relational Mapping)...

    Java面试框架高频问题2019

    - **After Throwing Advice**:在方法抛出异常后执行。 - **After (Finally) Advice**:无论方法是否正常完成都会执行。 - **Around Advice**:环绕通知,在方法调用前后都可以执行。 #### SpringBoot面试高频题 *...

    spring-javadoc-api.rar

    这些文档详细解释了每个类的功能、方法的参数、返回值以及可能抛出的异常,还有丰富的示例代码,便于开发者快速掌握使用方式。 1. **Spring Core Container**:这是Spring框架的基础,包括Bean Factory和...

Global site tag (gtag.js) - Google Analytics