Spring Framework/QueryDSL

Spring Framework/QueryDSL

Querydsl 날짜 연산 문제 해결 : Interval 예약어 미지원 - Java 날짜 객체를 사용하기

문제 상황Querydsl을 통해 MySQL에 날짜 함수를 적용하려고 하는데 이슈가 있었다.날짜 함수를 적용하기 위해서는 Expressions.stringTemplate 을 이용하면 원하는 mysql 함수를 적용시킬 수 있다고 생각했다.날짜 연산이 들어간 조건문을 만들어 디버깅을 하는데 해당 조건을 인식할 수 없다고 에러가 발생했다. reasonHibernate에서 아직 INTERVAl 예약어를 지원하지 않는다. QueryDsl 코드는 컴파일 이후 Hibernate로 변경되어 실행되므로, Hibernate에서 지원하지 않는 예약어는 사용할 수 없다!! (Querydsl은 HQL(Hibernate Query Language) 쿼리를 Type-Safe 하게 유지보수해야 할 필요로 탄생했다.) Querydsl ..

Spring Framework/QueryDSL

Querydsl OrderSpecifier를 활용한 동적 정렬 방법 - Pathbuilder, Sort

QueryParameter - Sort/search?category=book&price=1000&page=0&size=10&sort=id,asc&sort=price,desc 정렬 조건은 queryparameter를 통해 주로 전달합니다.ex) sort=id,asc- 위 코드는 id 값을 기준으로 오름차순 정렬을 의미합니다. 복수 개의 정렬은 단일 조건이 여러 번 전달받는 것과 같습니다.ex) sort=id,asc&sort=price,desc querydsl에서 정렬 조건을 주기 위해 2가지 방법이 있습니다.QEntity.field.asc() / QEntity.field.desc()첫 번째는 정적인 방법으로 QEntity.field.asc() / QEntity.field.desc() 방법이 있습니다.ret..

Spring Framework/QueryDSL

[Querydsl] JPAExpressions를 활용한 Querydsl 서브쿼리 작성 방법

JPAExpressionTo create a subquery you use the static factory methods of JPAExpressions. examplequeryFactory.selectFrom(department) .where(department.size.eq( JPAExpressions.select(d.size.max()).from(d))) .fetch(); where 절에 서브쿼리 적용하기 (eq)@Testpublic void subQuery() throws Exception { QMember memberSub = new QMember("memberSub"); List result = queryFactory .selectFrom(member)..

Spring Framework/QueryDSL

[Querydsl] QueryDSL @QueryProjection 프로젝션 활용법 : DTO, Bean, Field, Constructor 사용법

Querydsl을 통해 쿼리문을 작성하면서 프로젝션 하는 방법에 대해 정리하고자 합니다.그 중 Type Safe 체크와 immutable 객체 선언이 가능한 생성자 + @QueryProjection을 사용하고 있습니다.Projection이란데이터베이스에서 프로젝션은 주어진 릴레이션에 대해 각 레코드에서 원하는 애트리뷰트 집합으로만 이루어진 새로운 릴레이션을 만드는 단일 연산자입니다.Querydsl에서 Projection 다루기프로젝션 대상이 1개List result = queryFactory .select(member.username) .from(member) .fetch();프로젝션 대상이 하나인 경우 타입을 명확하게 지정할 수 있습니다.프로젝션 대상이 2개 이상이..

kylo
'Spring Framework/QueryDSL' 카테고리의 글 목록