30%
61,600원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결실전! Querydsl
연관관계 save 관련하여 질문드려요 !
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 ! 수업 완강 후, 사이드 프로젝트 진행중에 궁금한점이 생겨 질문드립니다 1:n 양방향 연관관계 에서 n쪽을 save하려는데 이슈가 발생했는데요. 우선 1:n을 Team : Member 라고 가정하고 팀은 기존에 생성해둔 데이터가 있습니다. 화면에서 팀의 대한 id값과 추가할 멤버 정보를 서버로 넘기면 서버에서 아래처럼 dto를 entity로 변환하고 Member member = new Member();member.setName(memberDto.getName());Team team = new Team();team.setId(memberDto.getTeamId());member.setTeam(team);memberRepository.save(member); save 를 실행해서 제가 원하는 결과값은 member만 insert가 되는 것인데 에러가 나더라구요. 구글링을 해서 찾아보니 cascade 를 ALL 로 주라고 하여서 실행해보면 Team table에도 정보가 같이 입력되는것을 확인했습니다. 하여 제 생각에는 id값 만으로는 기존 Team을 특정할수가 없어서 그런건가 싶어서 해결한 방식은 화면에서 id값을 넘겼을때 해당 id값으로 Team 정보를 조회하고 해당 정보를 아래처럼 세팅하여 저장하였습니다. Member member = new Member();member.setName(memberDto.getName());member.setTeam(team); // id값으로 조회한 team 을 넘겨서 세팅 memberRepository.save(member); 이렇게 원하는 결과값을 얻어 해결은 하였는데 과연 이게 맞는 방법인가 싶어서 질문드려요 id값 만으로 자식 인자를 insert하면 될줄 알았는데 꼭 부모값 조회가 한번은 필요한 것인지 해서요 제가 잘 알지 못해서 이게 맞는 방법인것인지 아니면 방법이 있는데 모르는 것인지 궁금합니다 ! 답변 부탁드립니다 ! 감사합니다
- 미해결실전! Querydsl
쿼리 데이터 조회가 안됩니다 ㅠㅠ..
비슷한 예제로 계시판을 하나 만들었는데, 콘솔에 나온 쿼리로 db에 쿼리 조회를 하면 조회가 되는데 콘솔에서는 값이 null이라고 나오네요 ㅠㅠ.. 뭔지 모르겠습니다 ㅠㅠ..
- 미해결실전! Querydsl
postgresql 쿼리를 dsl 에서 사용시 질문 드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]postgresql 쿼리문을 dsl 을 통해 사용하려 합니다. group by 를 사용하여 해당 기준에 따른 특정 컬럼의 데이터를 array_agg를 통해 받아오려면 어떻게 해야할까요?
- 미해결실전! Querydsl
@Test에 containsExactly 질문입니다
안녕하세요 test할 때 사진에 containsExactly가 에러가 나더라구요 assertThat(result).extracting("username").containsExactly("teamA", "teamB") 전에 이렇게도 쓰셨는데 이거도 안되구요ㅠㅠ 혹시 대안으로 쓸 수 있는 방법이 있는지 알려주시면 감사하겠습니다!
- 미해결실전! Querydsl
안녕하세요 querydsl의 의존 범위에 대한 질문입니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 영한님 현재 querydsl을 사용하여 where 조건이 복잡한 동적 쿼리를 구현중입니다. 현재 구현중인 기능에 데이터 조회를 하는 조건을 관리하는 기능이 있어서 조건을 데이터베이스에 저장하고 데이터베이스에서 조건을 가져와서 repository에서 BooleanBuilder로 각 조건을 조합하여 쿼리를 날리고 있습니다. 제가 궁금한건 Entity에서 어차피 조건을 가지고 있으니 Entity에서 바로 BooleanExpression을 만들어 repository로 전달해주는게 어떤가 하는 생각입니다. 그런데 이렇게 Entity에서 바로 BooleanExpression을 반환하자니 querydsl 의존이 domain에 걸리는거 같아서 조금 걱정입니다. 영한님은 Entity나 DTO가 queryDsl 객체에 의존을 가지는 것에 대해서 어떻게 생각하시나요.?
- 미해결실전! Querydsl
entity와 DTO의 join
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 영한님 jpa 로드맵을 수강하고 사이드프로젝트를 진행중인데요. 제목과 같이 entity 와 dto를 join할수 있는지 궁금합니다. 구체적으로 설명해보자면 우선 1. open api를 통해서 List<T> 를 DTO로 받아서(ex, 상품 list) 사용자가 상품을 좋아요 누른 데이터를 DB에 저장해두었습니다.(member idx 와 상품 idx 저장) open api 에서 받은 데이터는 따로 DB에 저장하지 않고 호출시마다 DTO로 응답하는데요. 2. 여기서 당연하게도 open api에서 받은 list에는 사용자의 좋아요가 담겨 있지 않기때문에 DB에서 사용자가 좋아요 누른 상품 list를 조회 후에 open api 에서 받은 list 를 돌며 좋아요 데이터를 추가해주고 있습니다. 혹시 2번처럼 진행하지않고 DB에서 사용자 좋아요 누른 상품(entity)을 open api 에서 받은 데이터(DTO)와 join 하는 방법은 없을까요? 설명이 부족하다면 말씀 부탁드립니다 ! 감사합니다.
- 미해결실전! Querydsl
querydsl(JPA) 성능질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. SPRING, JPA 강의를 진행중입니다. 해당강의 (Querydsl)한정 질문이 아니라 조심스럽습니다만.. 혹시 문제되면 나누어 강의컨셉에 맞는곳에 나누어 질문 올리도록하겠습니다.1. Query vs Spring(application)실무를 진행하고있지만...어떤 정보를 쿼리로 뽑아와야하고, 애플리케이션 단계에서 어느정도로 가공해야할지 그 기준에 대해 명확하게 정하지 못하는것 같습니다. 예를들어 "작년 한 해 동안의 주문내역중에 주문상태가 "완료"인것과 "취소"인것 두가지가 필요하다 했을때에,이두가지를 각각 쿼리로 바로 뽑아내야할지, 아니면 작년한해동안의 주문내역의 주문상태를 조회해서 서비스단에서 나뉘어야 할지...이 예시는 단순한 예시라 후자가 낫다는 판단이 되긴하는데, 실무에서는 좀더 복잡한부분이 있는것같아요. 혹시 참고할만한 가이드 같은게 있을까요? 한마디로 쿼리의 비용이 큰가요? 서비스단의 처리비용이 큰가요? 2. Where절 파라미터 vs 스프링 Filter1번 질문과 약간 중복되는 부분이 있는것같습니다. 쿼리에서 바인딩되는 파라미터의 개수가 성능에 영향을 미치나요? (많을수록 느려지는것 같아서요..)특정 조건에 맞는 데이터를 조회하고싶을때 아래 두가지 경우중 어느게 더 좋은 방법인가요?- where절에 .eq() 이런것들을 사용해서 조회- SELECT 절에 조건절에 사용하는 컬럼을 조회하고, 스프링단에서 stream().filter()로 해서 조회 3. QueryDsl의 Totalcount쿼리.해당강의에서 페이징쿼리 강의내용중 집계쿼리를 따로 작성하는 부분이 있습니다.페이징쿼리를 수행했을때, total카운트와 함께 특정 컬럼이 조건에 만족하는 것을 따로 집계한 카운트도 반환하고 싶습니다.예를들어 주문내역100건을 조회했을때 페이징쿼리로 20건씩 조회하는데주문내역 (진행중인건 82건/총 100건) <- 이데이터가 필요할때 "진행중인 건"에 대한 집계를 하고싶습니다.이경우 진행중인건에 대한 쿼리를 한번더 요청하는수밖에없나요? (카운트쿼리1, 집계쿼리1, 추가집계쿼리1 => 총3회 쿼리)아니면 추가 쿼리 없이 카운트쿼리의 select절에 "상태"컬럼을 추가해서 처리할 수 있는 방법이 있나요? (총2회 쿼리
- 미해결실전! Querydsl
jpa 질문은 아닌데...
GetMapping 으로 컨디션 객체를 매개변수로 받게 해놓고 쿼리스트링에 그 해당하는 객체의 필드명으로 데이터를 넘기면 자동으로 처리되는 건가요?스프링부트에서 해당기능을 제공하는건지 궁금합니다.
- 미해결실전! Querydsl
QHello.java 파일 임포트
maven 프로젝트 입니다. 기존 작업할땐 어떻게 어떻게 설정해서 테스트코드 돌려봤습니다. 깃으로 커밋후 다른컴퓨터 작업을하니 파일이 활성화가 안되고 임포트도 안됩니다. 무슨문제죠? 검색을 해도 해결이 안됩니다.
- 미해결실전! Querydsl
order by 의 동적 정렬에 대한 질문입니다.
동적 정렬을 하고 싶은데요. 원하는 결과는 1. 한글 (오름차순, 내림차순) 영어 숫자 내림차순 오름차순 2. 영어 (오름차순, 내림차순 ) 한글 숫자 내림차순 오름차순 입니다. JPAQuery<User> content = query.selectFrom(user) .where( searchQueryCustom(keyword, search), getIn(userIdListFilterByLanguage) ).orderBy(getSorting(pageable), getDirectionByName(pageable)); private OrderSpecifier<Integer> getSorting(Pageable pageable) { for (Sort.Order order : pageable.getSort()) { Order direction = order.getDirection().isAscending() ? Order.ASC : Order.DESC; switch (order.getProperty()) { case "email": return new OrderSpecifier(direction, user.email); case "sortKorean": return new OrderSpecifier(direction, new CaseBuilder() .when(user.name.between("가", "힣")).then(1) .when(user.name.between("a", "Z")).then(2) .otherwise(3)); case "sortEnglish": return new OrderSpecifier(direction, new CaseBuilder() .when(user.name.between("a", "Z")).then(1) .when(user.name.between("가", "힣")).then(2) .otherwise(3)); } } return null;}private OrderSpecifier<?> getDirectionByName(Pageable pageable) { for (Sort.Order order : pageable.getSort()) { return order.getDirection().isAscending() ? user.name.asc() : user.name.desc(); } return null;} 코드는 이렇게 구성되어있고 나오는 쿼리는 이렇습니다. select user0_.namefrom users user0_where user0_.uuid in ('0685167f0ebd4d128c8607044e893e60', '081b37bc3661429395d366f015f55f9c', '099dcb0174bd4de693226d8785499431')order by case when user0_.name between '가' and '힣' then 1 when user0_.name between 'a' and 'Z' then 2 else 3 end asc, user0_.name asclimit 10; 제가 원하는 결과를 뽑으려면 select user0_.namefrom users user0_where user0_.uuid in ('0685167f0ebd4d128c8607044e893e60', '081b37bc3661429395d366f015f55f9c', '099dcb0174bd4de693226d8785499431')order by case when user0_.name between '가' and '힣' then 1 when user0_.name between 'a' and 'Z' then 2 else 3 end , user0_.name asclimit 10; 위의 쿼리 처럼 되어야 나오는데요... orderBy 구절에서 OrderSpecifier 타입만 넣을 수 있기 때문에 direction을 필수 적으로 넣어야 합니다.. 어떻게 해야할까요.........
- 미해결실전! Querydsl
@Transacitonal 사용이유에 대한 질문입니다!
@Transactional을 사용하면 롤백된다고 알고있는데 이 부분에서 왜 사용하는것인가요?트랜잭셔널을 넣으면 100개의 멤버가 다 롤백되지 않나요? 아니면 @Test에서 사용하는 방식과 일반 mvc방식에서 사용하는 방식의 차이점이 있는건가요? 예를들어 mvc방식에서는 에러가일어날경우 롤백인데 @Test인경우에는 에러가없어도 자동롤백이라던지요..
- 미해결실전! Querydsl
안녕하세요. pageable를 사용해 member 클래스 select를 하는데 질문이 있습니다.
member 클래스를 pageable을 사용해서 select 하려고 하는데 안되더라구여. 간단한 코드라 이상한 부분도 없고 이부분과 관련된 질문들 다 찾아봐서 (패키지위치, 패키지명) 등등 다 체크해보고 중요한건 같은 위치에 있는 member 이외의 다른 엔티티 클래스들로 하면 되더라구여. Q클래스 생성시 다른 클래스들은 자동으로 자기 클래스명과 동일하게 생성이 되던데 member 클래스만 public static final QMember member = new QMember("member1"); member1로 생성이되서 이부분도 수동으로 맞춰줘서 해봐도 동일한 에러가 계속뜨고, pageable의(sort, direction)만 사용을 안하면 에러가 안뜨는거보니 member 클래스명이랑 pageable쪽에 원인이 있는거 같은데 원인이 무엇일까요?
- 미해결실전! Querydsl
fetchOne()의 예외
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 항상 좋은 강의 감사합니다. @Repository를 통해 JPA의 예외를 스프링이 추상화한 예외로 변환한다고 알고있습니다. 스프링 데이터 jpa의 경우 구현체에 @Repository가 있어서 단건조회에서 결과가 2개 이상이 나오는 경우 org.springframework.dao.IncorrectResultSizeDataAccessException 처럼 스프링 예외로 추상화되어 나오고 @Repository 클래스, 순수 jpa를 이용했을때도 같았습니다. querydsl도 JPQL 빌더이기에 @Repository에 의해 스프링 예외로 추상화 되지 않을까 생각했지만 com.querydsl.core.NonUniqueResultException 처럼 querydsl의 예외가 나왔습니다. 스프링 데이터 jpa에서 하부 구현기술을 바꾸더라도 기존 비즈니스 로직에 영향을 최대한 주지 않게 Service, Controller 계층에 스프링 예외로 올라가도록 한거라고 배웠는데 Querydsl 예외로 올라가면 결국 Querydsl 을 사용하지 않게 되면 기존 예외처리에 대한 부분에서 변경을 해야할 것 같은데 실무에선 그냥 Querydsl예외로 처리하나요? 생각해보면 현재 Qeurydsl 에서 다른 기술로 바꾸거나 빼거나 할 경우는 없어보이긴합니다 ㅎㅎ
- 미해결실전! Querydsl
querydsl dto 변환시 Projection.fields * 전체 컬럼 가져오는 방법 문의 건
안녕하세요 강사님~ 엔티티 -> Dto 로 변환시 Projection.fields 사용할때 해당 컬럼 100~ 200 개가 있다면 명시하기 귀찮을 수 있는데요 컬럼하나하나 명시 하지 않고 엔티티 -> Dto 전체를 매핑 시킬 방법은 없을까요?
- 미해결실전! Querydsl
querydsl에서의 값 타입 컬렉션
영한님 서포터즈님들 안녕하세요 강의에서는 엔티티 끼리의 DTO 변환은 조인을 통해 쉽게 할 수 있는데, querydsl의 프로젝션을 사용해서 DTO를 변환하는 중에 값 타입 컬렉션은 어떻게 할 수 있는지 궁금해서 여쭤보게 됐습니다. 현재 재 코드입니다 Club.class PetSizeType(Enum) EligibleBreed 이제 querydsl을 이용해서 DTO를 변환시키면 not an entity 라는 에러가 발생합니다 일단 값 타입 컬렉션은 entity가 아니기 때문에 해당 에러 로그는 이해가 됩니다 그렇다면 값 타입 컬렉션은 조인도 할 수 없기 때문에 10개의 Club을 가져오려면 select 쿼리가 20개가 나가게 되는데, 이를 최적화하는 방법이 없을까요? 아래의 사진은 하나의 club을 조회할 때 나가는 쿼리입니다! 그리고 제 개인적인 생각으로는 실무에서도 Enum타입을 자주 사용할 것 같은데,, 같은 Enum Type을 저장하기 위해서 따로 엔티티를 만드는 편인가요??(값 타입 컬렉션을 사용하지 않는지 궁금합니다) 감사합니다
- 미해결실전! Querydsl
쿼리 성능에 대하여...
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 영한님, 강의 잘 듣고 있습니다 ㅎㅎ 취준생때 영한님강의로 공부하고, 현재는 취업해서 JPA+Springboot로 실무에 참여하고있어요! [올해의 계약금액을 월별로 조회] 하는 API를 작성해야하는데요테이블관계는 아래와같습니다. (한명이 여러 계약을 가질수 있고, 하나의 계약에 여러개의 입금내역을 가집니다)[사람] 1 : N [계약] 1 : N [입금내역]입금내역을 조회하지만, 조건절에 사람테이블에 있는 컬럼을 사용해야해서 전부 조인을 걸었어요.SELECT ... FROM 사람 INNER JOIN 계약 ON ,,, INNER JOIN 입금 ON ... WHERE 사람.조건 = 조건 AND 계약.날짜 between '202201' and '202205' GROUPBY 계약날짜 -- 월별문제는 건수가 너무 많다는건데요.. 해당 데이터는 전체 몇백만건으로,[계약] - [입금내역]간 조인에 많은 시간이 소요되고 있어요..해당부분을 해소하기위한 방법으로는 어떤게있을까요? 아래 방법이 가능할까요?1. 서비스단에서 월별로 쿼리를 나누어서 실행 for문을 통해 총 5회의 쿼리를 수행...2. 쿼리자체에서 5번으로 수행해서 결과도출 (UNION ALL)영한님이였으면 어떻게 성능을 개선했을지 궁금합니다..
- 미해결실전! Querydsl
이상황에는 nativequery가 최선일까요..?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]QueryDsl로 [계약]테이블에서 [시작날짜], [종료날짜]를 조회해옵니다.그리고 API응답으로 기간(시작날짜~종료날짜)을 추가해주어야 하는데요.이것을 처음에는 Query로 두날짜를 디비에서 조회해오고, 서비스단에서 두날짜를 계산해서 일수를 응답해줬는데,비지니스 변경사항으로, 기간순으로 Orderby를 해야하는게 추가되었어요. Sorting조건이 총 4개인데 (그중하나가 기간)제가 생각해낸건... 우선 query에서 orderby를 해야겠다. 싶어서 select절에서 해당 기간을 계산하기로 했어요.PostgreSQL사용중인데 date_part 함수로 계산 할 수 있더라구요. -> 근데 이게 jpql에 지원안하는건지 querydsl로는 풀수가 없어서...NativeQuery로 해결했구요. orderby도 4가지로 동적처리를 해줘야해서 문자열로 컨트롤해서 처리했습니다.. ("... order by " + orderParam ;")영한님이면 어떻게 처리했을지... 너무나궁금해서 글남겨봅니다..
- 미해결실전! Querydsl
where절 BooleanBuilder 를 통한 null처리
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. where절을 이용한 동적쿼리를 작성할때 아래와 같이 조합하는 경우 ageGoe(ageGoe)가 null을 반환하면 NPE가 발생하기때문에 null체크를 해줘야 한다고 배웠습니다. private BooleanExpression ageBetween(int ageLoe, int ageGoe) { return ageGoe(ageGoe).and(ageLoe(ageLoe)); } 이에대한 해결책으로 eq같은 경우 파라미터가 null인 경우 IllegalArgumentException 예외를 던지기 때문에 이를 이용하여 아래와 같이 코드를 작성하면 null이 아닌 빈 BooleanBuilder를 반환하여 BooleanBuilder를 조합하는 방식으로 해결된다는 사실도 확인했습니다. 하지만 내부적으로 eq("") 이런 경우에 대한 처리는 되어있지 않고 실제로 ""를 넘겼을때 쿼리에서 member0_.username="" 이런식으로 동작하는걸 확인했습니다. 1. eq에서 ""로 들어올때 처리를 어떤식으로 해줘야 할까요? 그리고 member.age.goe(ageGoe) 의 경우 ageGoe에 null이 들어오는 경우 내부적으로 private ConstantImpl(T constant) { this((Class) constant.getClass(), constant); } 2. 이 메서드에서 constant.getClass() 부분에서 NPE가 발생합니다. 때문에 nullSafeBuilder 에서 NPE에 대해 catch로 처리를 하면 되긴 하지만 이 방법이 맞는지 모르겠습니다. 위 1, 2 질문에 대해 nullSafeBuilder를 쓰지 않고 각 메서드에서 if절로 처리하면 정상적으로 동작하고 해결이 되지만 nullSafeBuilder로 해결하려면 어떤식으로 작성해야할까요? private BooleanBuilder usernameEq(String usernameCond) { /*if (hasText(usernameCond)) { return new BooleanBuilder().and(member.username.eq(usernameCond)); } else { return new BooleanBuilder(); }*/ return nullSafeBuilder(() -> member.username.eq(usernameCond)); } private BooleanBuilder teamNameEq(String teamNameCond) { return nullSafeBuilder(() -> team.name.eq(teamNameCond)); } private BooleanBuilder ageGoe(Integer ageGoeCond) { /*if (ageGoeCond != null) { return new BooleanBuilder().and(member.age.goe(ageGoeCond)); } else { return new BooleanBuilder(); }*/ return nullSafeBuilder(() -> member.age.goe(ageGoeCond)); } private BooleanBuilder ageLoe(Integer ageLoeCond) { return nullSafeBuilder(() -> member.age.loe(ageLoeCond)); } public static BooleanBuilder nullSafeBuilder(Supplier<BooleanExpression> f) { try { return new BooleanBuilder(f.get()); } catch (IllegalArgumentException e) { return new BooleanBuilder(); } catch (NullPointerException e) { return new BooleanBuilder(); } }
- 미해결실전! Querydsl
소수점 반올림을 어떻게 설정해야 하나요?
queryFactory.select(new QReviewHospitalDto(evCriteria.averageRate.avg(), reviewHospital.count())).from(reviewHospital).avg() 함수를 사용하는데. 3.33333333 이런식으로 계속 계산되는데, 소수점 2번째 자리까지만 나타내고 싶으면 어떻게 표현해야하는지 궁금합니다. averageRate.avg()에서 무엇을 더 추가해야 되나요?
- 미해결실전! Querydsl
querydsl Repository class를 만들고 @Repository 써서 사용하면 ....
querydsl Repository class를 만들고 @Repository 써서 사용하면 web에선 동작이 되는데 Junit5 Test Code에 @Autowired로 주입하면 동작이 안되네요. 혹시 이유를 알수 있을까요? 그럼 곡 Repository class를 impl class로 두고 그걸 상속하는 Repository interface를 사용하는 방식이 OOP 관점에선 맞는 방식인 것 같긴한데 아예 동작이 안되는 이유는 모르겠네요. JUnit5 TestCode에서