티스토리 뷰
반응형
org.hibernate.hql.internal.ast.QuerySyntaxException: SampleEntity is not mapped
앞서 다중 DB를 사용하기 위해 설정하고
JPA + QueryDSL + Mybatis 를 이용할 수 있게 구성했는데
그 중 querydsl 을 사용할 때 Primary DB 는 크게 문제 없이 잘 작동 하였는데
sub DB 가 위와 같은 오류를 내뿜었다.
해당 오류는 db에 엔티티 테이블 맵핑을 찾을 수 없어서 나는 오류이다.
나는 querydsl 설정을 아래와 같이 하였고
@Configuration
public class QuerydslConfig {
@PersistenceContext(unitName = "primaryPersistence")
private EntityManager entityManager;
@PersistenceContext(unitName = "secondPersistence")
private EntityManager secondEntityManager;
@Primary
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(entityManager);
}
@Bean
public JPAQueryFactory secondJpaQueryFactory() {
return new JPAQueryFactory(secondEntityManager);
}
}
서브 querydsl 설정을 아래와 같이 해놨었다.
@Repository
@RequiredArgsConstructor
public class SampleQueryRepository {
@Qualifier("secondJpaQueryFactory")
private final JPAQueryFactory secondJpaQueryFactory;
...
}
JPAQueryFactory 클래스에 서브 db 빈을 주입해주고
final 변수 생성자를 만들어주는 @RequiredArgsConstructor 를 사용해서
잘 동작할 것 이라 생각했지만...
@Autowired 를 사용하지 않아서 @Qualifier 가 무시되고,
Primary DB bean 을 바라보게 된 것이었다.
동일한 여러 빈을 올바르게 주입시키지 못하는 실수를 범하면서
서브 db Entity 가 맵핑되지 않았다.
그래서 @Autowired를 쓰는 경우와 안쓰는 경우로 아래와 같이 해결 할 수 있다.
1. @Autowired 사용 안하고 생성자에서 직접 지정해주는 경우
@Repository
public class SampleQueryRepository {
private final JPAQueryFactory secondJpaQueryFactory;
public SampleQueryRepository(@Qualifier("secondJpaQueryFactory") JPAQueryFactory secondJpaQueryFactory) {
this.secondJpaQueryFactory = secondJpaQueryFactory;
}
...
}
2. @Autowired 사용해서 자동 주입시켜 주는 경우
@Repository
@RequiredArgsConstructor
public class SampleQueryRepository {
@Autowired
@Qualifier("secondJpaQueryFactory")
private final JPAQueryFactory secondJpaQueryFactory;
...
}
반응형
'Java > JPA, QueryDSL' 카테고리의 다른 글
[JPA] DB환경별 다중 schema, catalog 엔티티 적용법 (2) | 2023.11.22 |
---|---|
[QueryDSL] Projections, @QueryProjection 을 사용하여 DTO로 반환하기 (1) | 2023.11.13 |
[JPA] LocalContainerEntityManagerFactoryBean의 setJpaPropertyMap을 설정할 때 사용할 수 있는 key 값 목록 (0) | 2023.10.24 |
[Entity] @PrePersist , @PreUpdate 차이 (0) | 2023.09.18 |
[QueryDSL] Q클래스 생성 및 설정. -종결- (feat.intelliJ) (2) | 2023.08.23 |
댓글