2017-03-13 1 views
1

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를 사용하여 더 이상

sample project

+1

'@ EnableTransactionManagement'를 사용 하시겠습니까? –

+0

예, 구성 클래스에 있습니다. – adeelmahmood

+0

H2 데이터베이스에서도 문제를 보여주는 샘플 프로젝트를 추가했습니다. – adeelmahmood

답변

1

문제가 수정되었습니다 지속되지는 dataSourceTransactionManagerentityManager에 연결되지 않은 사용중인 JPA

관련 문제