Q-Type 활용
별칭 직접 지정
기본 인스턴스 활용
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QMember extends EntityPathBase<Member> {
public static final QMember member = new QMember("member1");
...
}
Q 클래스에서 만들어놓은 QMember를 static import해서 사용할 수 있다.
JPQL 로그 확인
spring.jpa.properties.hibernate.use_sql_comments: true
Querydsl은 결국 JPQL을 만드는 빌더 역할을 한다.
따라서 JPQL 로그를 보려면 위와 같이 추가한다.
select member1
from Member member1
where member1.username = ?1
QMember에서 variable 값(JPQL의 alias)을 member1으로 자동 생성했기 때문에 쿼리에도 member1로 나간다.
import static study.querydsl.entity.QMember.*;
@SpringBootTest
@Transactional
public class QuerydslBasicTest {
...
@Test
public void startQuerydsl3() {
QMember m1 = new QMember("m1");
Member findMember = queryFactory
.select(m1)
.from(m1)
.where(m1.username.eq("member1"))
.fetchOne();
assertThat(findMember.getUsername()).isEqualTo("member1");
}
}
직접 지정하면 m1이란 이름으로 jpql이 나간다.
같은 테이블을 조인해야 하는 경우는 이름이 같으면 안되니까 이렇게 따로 선언해 사용한다.
이런 경우가 아니면 기본 인스턴스를 사용한다.
Last updated
Was this helpful?