R2DBC 와 jpa/jdbc 를 같이 사용할 일이 생겨서 설정 변경 후 실행하는 과정에서 몇 가지 문제에 부딪혔다.
완벽한 해결책은 아닐 듯 싶지만 위 이슈 페이지 참고해서 급한 문제는 아래 방식으로 해결.
( 당연히 설정 파일에 r2dbc, jpa/jdbc 용 설정 두 가지 다 해줘야 하고 이건 별다를거 없으니 생략. )
1. '... Repository' that could not be found' 또는 'Reactive Repositories are not supported by JPA' 에러
R2DBC 와 JPA/JDBC 용 repository 를 같은 패키지 내에 배치하면 둘 중 한 쪽 Repo 인터페이스를 못 찾거나 Reactive Repositories 는 JPA 에서 지원하지 않는다는 에러 발생.
이같은 경우에는 패키지 분리 후 @Enable***Repositories 애노테이션으로 각각의 repo 패키지를 분리 설정한다.
- 각각의 repo 인터페이스를 다른 패키지로 분리
- SpringBoot Application 클래스에서 애노테이션 이용하여 다음과 같은 식으로 각 패키지 지정.
@EnableJpaRepositories("com.jpa_jdbc용.repo")
@EnableR2dbcRepositories("com.r2dbc용.repo")
2. 'Reactive Repositories are not supported by JDBC.' 에러
또는 repo 분리 설정(위 1번) 했음에도 'Parameter 0 of method setMappingContext in org.springframework.data.jdbc.repository.support.JdbcRepositoryFactoryBean required a single bean, but 2 were found' 에러가 나는 경우.
import org.springframework.data.relational.core.mapping.Table;
@Table("my_table")
만약 엔티티에서 @Table 애노테이션을 앞에서 처럼 사용하고 있는 경우에 발생한다. 다음과 같이 javax.persistence 에서 제공하는 @Table 애노테이션 사용하게 바꿔줘야 한다.
import javax.persistence.*;
@Table(name = "my_table")
3. '... required a bean named 'entityManagerFactory' that could not be found.'
@Configuration 파일에 아래 애노테이션 추가.
@Import(DataSourceAutoConfiguration.class)
'Lang' 카테고리의 다른 글
[python, julia]python 에서 julia 스크립트 파일 실행하기 (0) | 2022.05.20 |
---|---|
[Kotlin]Kotlin, Spring boot, Reactive Programming 조합으로 간단한 Rest API 구현해보기 (0) | 2022.05.20 |
[go] postgresql 연동 테스트용 go 코딩 샘플 (0) | 2022.04.20 |
[python]엑셀 파일에서 데이터 추출해서 소스 생성하기 (0) | 2022.04.14 |
[kotlin]애기 걸음, reactive 구구단 (0) | 2022.04.04 |