묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 데이터 JPA
커스텀 타입 클래스를 String 타입 처럼 이용해 쿼리하는 방법에 대해 질문하고 싶습니다.
안녕하세요 강사님. 강사님의 강의를 들으면서 처음으로 jpa와 querydsl을 이용하여 프로젝트를 진행하는 중 막히는 부분이 있어 질문드립니다. primitive type의 필드가 아닌, 커스텀 클래스를 타입으로 갖는 엔티티를 만들어 사용중에 있습니다. @Entity public class User{ private Email email; private String name; private String password; } 위와 같은 엔티티가 있을 때, 사용자로부터 넘겨받은 문자열을 가지고 select * from user where email like '%input%' or name like '%input%'; 과 같은 쿼리를 사용하려면 어떻게 해야할까요?? 검색을 통해, QueryDSL의 @QueryType(PropertyType.STRING) 등 또한 사용해봤지만 원하는 기능을 구현해내지 못했습니다.
-
미해결실전! Querydsl
프로젝션 반환 타입의 레이어가 고민됩니다
프로젝션 쿼리에서 DTO를 사용하게 되면, Domain-Application-UI 모든 레이어에 의존성이 생기게 되는데요.. 그래서 DTO가 아니라 VO로 봐도 될지 고민 됩니다. 영한님의 의견과 실무에서 반환타입을 어떻게 사용하고 계신지 궁금합니다!!
-
미해결실전! Querydsl
querydsl random select관련
안녕하세요 querydsl을 사용하여 이것저것 해보다가, 랜덤으로 orderby해서 값을 가져오는 경우엔 어떻게 해야할지 궁금합니다 jpa나 jpql, querydsl을 사용하여 random select를 구현할 순 없을까요?? 참고로 DB는 MariaDB입니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
jpql 관련 질문입니다!
안녕하세요 강사님! 강의 잘 듣고 있습니다! JPQL(or Querydsl)과 관련된 질문이 있습니다 FROM절 서브쿼리는 지원하지 않는다고 말씀하셨는데 그 말씀은 아래외 같은 쿼리는 JPQL로 표현이 불가능하다는 말씀이신가요? 불가능하다면 아래와 같은 통계성 서브쿼리가 들어간 쿼리를 어떻게 해결해야 가장 효율적으로 해결할 수 있는건지 궁금합니다!(Querydsl을 사용해서 해결하고 싶습니다) 아래 쿼리는 거래 내역 테이블에서 거래된 아이템별로 그룹핑한 데이터에서 아이템별 최소 가격을 먼저 뽑아내고, 이렇게 만들어낸 인라인 뷰를 아이템 테이블, 브랜드 테이블과 조인하는 쿼리입니다 SELECT i.*, br.*, b.immediately_purchase_price FROM item i INNER JOIN brand br ON br.brand_id = i.brand_id LEFT JOIN ( SELECT item_id, MIN(price) AS immediately_purchase_price FROM bid GROUP BY item_id ) b ON i.item_id = b.item_id ORDER BY release_date DESC LIMIT 16
-
미해결실전! Querydsl
안녕하세요. 리턴 타입 질문 드립니다.
조회시에 List가 아닌 set 으로 리턴 하는 방법이 있나요? ex) public Set<Long> findByNamesIn(List<String> name) { return jpaQueryFactory .select(member.id) .from(member) .where(member.name.in(name)) .fetch(); // set return}
-
미해결실전! Querydsl
Spring Sort를 QueryDSL 변환 적용하는 방법 문의
안녕하세요. 강사님 QueryDSL 재미있게 배웠습니다. 정렬기준을 아래와 같이 받았을 때 pageable 파라미터를 이용해서 QueryDSL에 적용하는 방법에 대해서 고민입니다. 정렬기준 입력 형태: URI?sort=field1,asc&sort=field2,desc org.springframework.data.domain.Sort 방법1. pageable 값을 얻어와 직접 queryDSL에 OrderSpecifier로 지정 if (pageable != null) { query.offset(pageable.getOffset()); query.limit(pageable.getPageSize()); for (Sort.Order o : pageable.getSort()) { PathBuilder<Object> orderByExpression = new PathBuilder<Object>(Object.class, "object"); query.orderBy(new OrderSpecifier(o.isAscending() ? com.mysema.query.types.Order.ASC : com.mysema.query.types.Order.DESC, orderByExpression.get(o.getProperty()))); } } 방법2. applyPagination() 함수로 매핑 getQuerydsl().applyPagination(pageable, jPQLQuery); 결과적으로 방법2가 더 깔끔해 보이는데 원본 엔티티와 DTO객체가 달라서 org.hibernate.hql.internal.ast.QuerySyntaxException이 발생하는 이슈가 있습니다. 현재까지 결론은 방법1을 사용해야할 것으로 보이는데 더 좋은 방법을 아시는지 문의드립니다. 감사합니다.