java.lang.NullPointerException
at com.querydsl.jpa.impl.JPAProvider.getTemplates(JPAProvider.java:88)
at com.querydsl.jpa.impl.JPAQuery.<init>(JPAQuery.java:48)
at com.querydsl.jpa.impl.JPAQueryFactory.query(JPAQueryFactory.java:138)
at com.querydsl.jpa.impl.JPAQueryFactory.select(JPAQueryFactory.java:72)
at com.querydsl.jpa.impl.JPAQueryFactory.selectFrom(JPAQueryFactory.java:102)
at com.psj.itembrowser.order.repository.CustomOrderRepositoryImpl.selectOrdersWithPagination(CustomOrderRepositoryImpl.java:38)
at com.psj.itembrowser.order.repository.CustomOrderRepositoryImpl$$FastClassBySpringCGLIB$$bd307390.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
가 발생했다.
@PersistenceContext
private EntityManager em;
private final JPAQueryFactory qf;
public CustomOrderRepositoryImpl() {
this.qf = new JPAQueryFactory(em);
}
- Qdsl 클래스는 요런식으로 초기화중이였는데
PersistenceContext
로 EM 을 주입하는 경우- 객체가 생성된 이후에, 즉, 생성자로 객체가 생성된 이후에 주입되며
- qf에는 결국 null 값의 EntityManager 가 주입된다.
해결
@PostConstruct
을 사용하여 객체 생성이후에 주입받도록 설정
@PersistenceContext
private EntityManager em;
private JPAQueryFactory qf;
@PostConstruct
public void init() {
this.qf = new JPAQueryFactory(em);
}
Uploaded by N2T
'자바 > QueryDsl' 카테고리의 다른 글
error: package com.querydsl.core.types does not exist (0) | 2024.02.21 |
---|---|
[QueryDsl] QueryDslSupport 클래스 대안 (0) | 2023.11.19 |
[DataJpa] DataJpa 페이징과 정렬 (0) | 2023.11.17 |
[QueryDsl+DataJpa] QueryDslRepositorySupport 사용! (0) | 2023.11.17 |
[DataJpa] __**@Query 어노테이션을 이용한 쿼리 정의**__ (0) | 2023.11.17 |