JpaItemWriter:没有事务在进行中

成员之声

我想使用JpaItemWriter批处理持久化实体。但是,当我使用以下代码持久化时,系统会告诉我:

Hibernate: 
    select
        nextval ('hibernate_sequence')
[] 2014-03-19 15:46:02,237 ERROR : TransactionRequiredException: no transaction is in progress

如何在以下方面启用事务:

@Bean
public ItemWriter<T> writer() {
    JpaItemWriter<T> itemWriter = new JpaItemWriter<>();
    itemWriter.setEntityManagerFactory(emf);
}

@Configuration
@EnableTransactionManagement
@EnableBatchProcessing 
class Config{ {
     @Bean
    public LocalContainerEntityManagerFactoryBean emf() {
        LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
        emf.setDataSource(dataSource());
        emf.setPackagesToScan("my.package");
        emf.setJpaVendorAdapter(jpaAdapter());
        emf.setJpaProperties(jpaProterties());
        return emf;
}

编辑:

@Bean
public Job airlineJob(JobBuilderFactory jobs, Step step) {
    return jobs.get("job")
            .start(step)
            .build();
}

//Reader is a `FlatFileItemReader`, writer is `CustomItemWriter`.
@Bean
public Step step(StepBuilderFactory steps,
        MultiResourceItemReader<T> rea,
        ItemProcessor<T, T> pro,
        ItemWriter<T> wr) {
    return steps.get("step")
            .reader(rea)
            .processor(proc)
            .writer(wr)
            .build();
}

//use same datasource and tx manager as in the full web application
@Bean
public JobLauncher launcher(TransactionManager tx, DataSource ds) throws Exception {
    SimpleJobLauncher launcher = new SimpleJobLauncher();

    JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
    factory.setDataSource(ds);
    factory.setTransactionManager(tx);

    jobLauncher.setJobRepository(factory.getJobRepository());
    return launcher;
}

编辑2作为对@Haim的响应:

@Bean
    public JpaItemWriter<T> jpaItemWriter(EntityManagerFactory emf) {
        JpaItemWriter<T> writer = new JpaItemWriter<T>();
        writer.setEntityManagerFactory(emf);
        return writer;
    }
海姆·拉曼

我同意Michael Minella的观点:Spring批处理作业存储库不喜欢与其他人共享其事务管理器。逻辑很简单,如果您在步骤失败时与步骤事务管理器共享您的作业事务管理器,它将回滚步骤和写入作业存储库的数据。这意味着您将不会保留数据以重新启动作业。为了使用两个事务管理器,您需要:

如果@EnableTransactionManagement用于以上@Transactional,请删除它
定义其他事务管理器

@Bean
@Qualifier("jpaTrx")
public PlatformTransactionManager jpaTransactionManager() {
       return new JpaTransactionManager(emf());
}

将交易管理器设置为您的步骤

@Autowired
@Qualifier("jpaTrx")
PlatformTransactionManager jpaTransactionManager

 //Reader is a FlatFileItemReader, writer is CustomItemWriter.
    @Bean
    public Step step(StepBuilderFactory steps,
            MultiResourceItemReader<T> rea,
            ItemProcessor<T, T> pro,
            ItemWriter<T> wr) {
        return steps.get("step")
                //attach tx manager
                .transactionManager(jpaTransactionManager)
                .reader(rea)
                .processor(proc)
                .writer(wr)
                .build();
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Hibernate,EJB,javax.persistence.TransactionRequiredException:没有事务在进行中

来自分类Dev

尝试使JPA / Hibernate与REST配合使用-TransactionRequiredException:没有事务进行中错误

来自分类Dev

从spring-boot-starter-data-jpa 0.5.0.M6升级到0.5.0.BUILD-SNAPSHOT会导致“ TransactionRequiredException:没有事务在进行中”

来自分类Dev

实体框架中没有事务的存储过程

来自分类Dev

创建没有事务日志的备份

来自分类Dev

MongoError:没有事务开始

来自分类Dev

在SQL Server 2014中查看所有事务日志

来自分类Dev

为什么我的Jboss服务器开始进行所有事务的事务?

来自分类Dev

org.hibernate.HibernateException:当前事务不在进行中

来自分类Dev

ServiceStack.Redis客户端-事务已在进行中

来自分类Dev

即使我没有显式调用$ apply()也会出现“ $ apply已经在进行中”错误

来自分类Dev

收到AngularJS错误:“ [$ rootScope:inprog] $ digest已经在进行中”,没有手动的$ apply

来自分类Dev

我没有显式调用$ apply,但仍然得到错误:[$ rootScope:inprog] $ apply已经在进行中

来自分类Dev

在 SQL 中的第一个事务的 30 天内返回所有事务

来自分类Dev

如果Spring Batch中的事务失败,如何停止JpaItemWriter?

来自分类Dev

iOS sqlite无法提交,没有事务处于活动状态

来自分类Dev

如何在没有事务的情况下增加PDO SQLite插入?

来自分类Dev

如果没有事务,如果回滚表会发生什么?

来自分类Dev

如何在没有事务的情况下增加PDO SQLite插入?

来自分类Dev

如何解决运行时错误没有事务处于活动状态?

来自分类Dev

SQLite 外键约束在有事务进行时不能启用或禁用

来自分类Dev

带有事务的Spring Data JPA

来自分类Dev

SqlBulkCopy-意外的现有事务

来自分类Dev

具有事务配置的Spring Boot

来自分类Dev

带有事务支持的JavaFX TableView

来自分类Dev

SqlBulkCopy-意外的现有事务

来自分类Dev

有没有一种方法可以使用进行中的动态查询有条件地应用内部联接?

来自分类Dev

JobRepository中检测到的现有事务-带有Grails插件的Spring Batch

来自分类Dev

每个事务的单个连接与所有事务的单个连接?

Related 相关文章

  1. 1

    Hibernate,EJB,javax.persistence.TransactionRequiredException:没有事务在进行中

  2. 2

    尝试使JPA / Hibernate与REST配合使用-TransactionRequiredException:没有事务进行中错误

  3. 3

    从spring-boot-starter-data-jpa 0.5.0.M6升级到0.5.0.BUILD-SNAPSHOT会导致“ TransactionRequiredException:没有事务在进行中”

  4. 4

    实体框架中没有事务的存储过程

  5. 5

    创建没有事务日志的备份

  6. 6

    MongoError:没有事务开始

  7. 7

    在SQL Server 2014中查看所有事务日志

  8. 8

    为什么我的Jboss服务器开始进行所有事务的事务?

  9. 9

    org.hibernate.HibernateException:当前事务不在进行中

  10. 10

    ServiceStack.Redis客户端-事务已在进行中

  11. 11

    即使我没有显式调用$ apply()也会出现“ $ apply已经在进行中”错误

  12. 12

    收到AngularJS错误:“ [$ rootScope:inprog] $ digest已经在进行中”,没有手动的$ apply

  13. 13

    我没有显式调用$ apply,但仍然得到错误:[$ rootScope:inprog] $ apply已经在进行中

  14. 14

    在 SQL 中的第一个事务的 30 天内返回所有事务

  15. 15

    如果Spring Batch中的事务失败,如何停止JpaItemWriter?

  16. 16

    iOS sqlite无法提交,没有事务处于活动状态

  17. 17

    如何在没有事务的情况下增加PDO SQLite插入?

  18. 18

    如果没有事务,如果回滚表会发生什么?

  19. 19

    如何在没有事务的情况下增加PDO SQLite插入?

  20. 20

    如何解决运行时错误没有事务处于活动状态?

  21. 21

    SQLite 外键约束在有事务进行时不能启用或禁用

  22. 22

    带有事务的Spring Data JPA

  23. 23

    SqlBulkCopy-意外的现有事务

  24. 24

    具有事务配置的Spring Boot

  25. 25

    带有事务支持的JavaFX TableView

  26. 26

    SqlBulkCopy-意外的现有事务

  27. 27

    有没有一种方法可以使用进行中的动态查询有条件地应用内部联接?

  28. 28

    JobRepository中检测到的现有事务-带有Grails插件的Spring Batch

  29. 29

    每个事务的单个连接与所有事务的单个连接?

热门标签

归档