我正在使用 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] 删除。
我来说两句