습관처럼 QueryDsl을 사용하기 위해 JPAConfig를 만들려고 했다
@Configuration
@EnableJpaAuditing
public class JPAConfig {
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory queryFactory() {
return new JPAQueryFactory(entityManager);
}
}
그랬더니 다른 곳에서 이미 JPAAuditoing이 되고 있어서 안 된다는 에러가 떴다 overriding = true로 바꾸라는 제안도 있었지만 위험할 것 같아서 하지 않았다
찾아보니 동일한 모듈에 이게 있었다
@Configuration
@EnableJpaAuditing(auditorAwareRef = "auditorProvider")
public class JpaAuditConfiguration {
@Bean
public AuditorAware<String> auditorProvider(){
return new LoginUserAuditorAware();
}
}
그래서 여기다가 JPAQueryFactory Bean을 생성해주고 해결했는데 이유가 궁금해졌다
@Configuration
@EnableJpaAuditing(auditorAwareRef = "auditorProvider")
public class JpaAuditConfiguration {
@Bean
public AuditorAware<String> auditorProvider(){
return new LoginUserAuditorAware();
}
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory queryFactory() {
return new JPAQueryFactory(entityManager);
}
}
@EnableJpaAuditing
- JPA의 Auditing 기능을 활성화하는 어노테이션
- Entity의 생성 및 수정 시간 등을 자동으로 관리해주는 역할
- 애플리케이션 컨텍스트에서 한 번만 선언되어야 한다
- 스프링 부트는 하나의 컨텍스트에서 여러 설정 클래스를 자동으로 감지하고 관리하는데 @EnableJpaAuditing이 중복으로 선언되면 동일한 Auditing 설정을 여러 번 적용하려고 시도하다가 에러가 발생한다
'Journal' 카테고리의 다른 글
Spring에서 MongoDB 이용할때의 Pagination : MongoTemplate 으로 List<Model> , Page<Model> 리턴 (1) | 2024.09.22 |
---|---|
QueryDSL로 검색 기능 구현 + 쿼리 빌드 단계적으로 하기 + LocalDateTime을 Controller의 Parameter로 받을 때 주의할 점 (0) | 2024.09.05 |
QueryDSL 설정 (0) | 2024.09.05 |
Spatial Index 전환기 (0) | 2024.08.01 |
한 시간 후 만료되는 초대 링크 개발기 : DB 구성에 대한 고민 (0) | 2024.06.20 |