"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

오늘이군

QueryDSL multiple subselect - (a,b) in (select c,d) 본문

삶../프로그래밍

QueryDSL multiple subselect - (a,b) in (select c,d)

오늘이군 2019. 4. 17. 14:39
반응형

JPA 를 사용하면서 좀 더 객체지향적으로 좀 더 쉽게 짜야겠다는 고민이 있어.. 
이런식으로 안짜려고 하고 있지만,
mybatis 쿼리에 익숙한 동료가 물어보던 참에 같이 해결하다 보니 별다른 예제가 없어서 남깁니다. 

이런 형태의 쿼리를 수행하고 싶은 경우 JPQL 은 다음과 같이 짭니다. 

	public List<Product> qLastOrderedProducts() {

		JPQLQuery<Product> query = from(qProduct1);
		query.where(
			Expressions.list(qProduct1.id, qProduct1.salesDt).in(
				JPAExpressions
				.select(Expressions.list(qProduct2.id, qProduct2.salesDt.max()))
				.from  (qProduct2)
				.where (qProduct2.id.eq(qProduct1.id)
				.and   (qProduct2.productStatus.eq(ProductStatus.ORDERED))
				)
				.groupBy(qProduct2.id)
			) 
		);

		return query.fetch();
  	}
	
	private QProduct qProduct1 = QProduct.product;
	private QProduct qProduct2 = QProduct.product;

반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Comments