DataSourceTransactionManager不持久化数据

时间:2017-03-13 04:45:17

标签: hibernate jpa spring-data spring-data-jpa

我使用spring数据JPA在Oracle数据库中插入/更新一些数据。如果我没有明确指定dataSource和/或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,数据就不再存在了

sample project

1 个答案:

答案 0 :(得分:1)

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