Oracle 데이터베이스에 일부 데이터를 삽입/업데이트하기 위해 스프링 데이터 JPA를 사용하고 있습니다. 명시 적으로 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);
}
- 여기
이 문제를 보여주는 예제 프로젝트입니다. 나는이 경우 생각하기 때문에 나는 단순히 transactionManager
을 추가하여 여기 H2를 사용하고, 데이터가 jpaTransactionManager
를 사용하여 더 이상
'@ EnableTransactionManagement'를 사용 하시겠습니까? –
예, 구성 클래스에 있습니다. – adeelmahmood
H2 데이터베이스에서도 문제를 보여주는 샘플 프로젝트를 추가했습니다. – adeelmahmood