私は、バネ・データJPAを使用してOracleデータベースにデータを挿入/更新しています。私がdataSource
および/またはplatformTransactionManager
を明示的に指定していないと、すべて正常に動作し、データを挿入/更新できます。 platformTransactionManager
としてDataSourceTransactionManager
と指定した場合、例外はスローされませんが、データはデータベースに挿入されません。DataSourceTransactionManagerはデータを永続化しません
コミットの問題のようです。このデータソースを使用すると、発生していない明示的なコミットが必要と思われます。そのため、データは実際には永続化されません。私はspring.datasource.tomcat.defaultAutoCommit: true
を指定しようとしましたが、それは助けになりませんでした。
すべてのトランザクションの完了時にどのようにコミットすることができるかに関するアイデア。私の挿入/更新コードは、この
@Transactional
@Override
public OrderEntity save(OrderResponse order) {
OrderEntity o = orderRepository.unwrap(order);
return orderRepository.save(o);
}
トランザクションマネージャ豆のようになります。
@Primary
@Bean
public PlatformTransactionManager txManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
- ここ
問題を示すサンプルプロジェクトです。私はここでH2を使用していますが、単にtransactionManager
を追加することにより、データがもはや
あなたは '@ EnableTransactionManagement'を使っていますね。 –
はい、私は構成クラスでそれを持っています – adeelmahmood
H2データベースでも問題を示すサンプルプロジェクトを追加しました – adeelmahmood