DataSourceTransactionManager 不持久化数据

阿德马哈茂德

我正在使用 spring 数据 JPA 在 Oracle 数据库中插入/更新一些数据。如果我没有明确指定 adataSource和/或 a platformTransactionManager,一切都很好,我可以插入/更新数据。如果我指定DataSourceTransactionManager为,platformTransactionManager则不会引发异常,但不会将数据插入到数据库中。

这似乎是一个提交问题。使用这个数据源似乎需要一个没有发生的显式提交,因此,数据实际上从未被持久化。我试过指定,spring.datasource.tomcat.defaultAutoCommit: true但没有帮助。

关于我如何在每笔交易完成时提交的任何想法。我的插入/更新代码如下所示

@Transactional
@Override
public OrderEntity save(OrderResponse order) {
    OrderEntity o = orderRepository.unwrap(order);
    return orderRepository.save(o);
}

事务管理器 bean:

@Primary
@Bean
public PlatformTransactionManager txManager(DataSource dataSource) {
    return new DataSourceTransactionManager(dataSource);
}

——

这是一个演示该问题的示例项目。我在这里使用 h2 并通过简单地添加transactionManager,数据不再持久化

示例项目

阿德马哈茂德

问题是通过使用解决的,jpaTransactionManager因为我认为在这种情况下,与JPA 使用的dataSourceTransactionManager无关entityManager

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章