
QueryDSL를 이용하여 Where 절 안에 IN 절을 사용해야 할 때가 있습니다. 단일 컬럼의 경우 QClass의 컬럼을 선택하고 .in() 메서드를 체이닝해서 처리를 하면 됩니다. 여러 개의 컬럼을 이용해야 할 경우 Expressions.list() 를 사용해서 컬럼 목록을 파라미터로 입력하고 .in() 메서드를 호출하면 됩니다. 이 때 in 메서드 안에 입력되는 값들은 다음과 같습니다. public BooleanExpression in(Collection right)public BooleanExpression in(T... right)public BooleanExpression in(CollectionExpression right)public BooleanExpression in(SubQuery..

트러블 슈팅MyBatis 코드를 JPA + QueryDSL로 이관하는 작업을 하고 있습니다. MySQL 컬럼 중 date, datetime을 LocalDate, LocalDateTime으로 매핑하고 개발을 진행하던 중 QueryDSL에서 where(), set() 등에서 LocalDate, LocalDateTime 객체를 파라미터로 넣어서 처리를 하고 있습니다. 문제는 하이버네이트의 바인딩 쿼리를 봤을 때 날짜 형식 문자열이 'MM/dd/yyyy HH:mm:ss'로 표시가 되는 것을 확인했습니다. 이 문자열 형식은 timestamp 컬럼의 경우 정상적으로 동작을 하지만, date, datetime의 경우 처리가 되지 않는 문제가 있습니다. 원하는 형식 문자열은 'yyyy-MM-dd HH:mm:ss' 입니..
MyBatis 코드를 QueryDSL로 이관하는 작업 중에 여러 개의 테이블의 조인되어 있는 결과를 반환하는 매핑 클래스를 만들어야 했습니다. QueryDSL의 경우 projection이라고 해서 SELECT 절의 조회 대상을 지정하는 방법이 있었습니다. projection 용 record 타입의 dto를 하나 만들어 결과를 매핑하여 처리를 하였는데요. 그 코드를 한 번 소개하려고 합니다. ProjectionProjection은 프로그래밍 및 데이터베이스 분야에서 전체 데이터 중 일부만 선택해 가져오는 작업을 말합니다. 주로 QueryDSL, JPA, SQL 등에서 사용되며, 필요한 데이터만 선택적으로 추출하여 효율적인 데이터 전송 및 처리를 가능하게 합니다. Projection 사용 시 주의 사항 ..

프로젝트 스펙은 다음과 같았습니다.jdk 17spring boot 2.7.18 QueryDSL 의존성은 다음과 같이 추가했습니다.implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"annotationProcessor "jakarta.annotation:jakarta.annotation-api"annotationProcessor "jakarta.persistence:jakarta.persistence-api" 이 상황에서 빌드를 수행하니 다음과 같은 에러가 발생했습니다.Execution failed for task ':compileJava'. > ja..