월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결실전! Querydsl
querydsl 동적 쿼리 질문
안녕하세요 영한님! 강의는 잘 듣고 있습니다. 강의를 듣다가 궁금한 점이 어디까지 동적쿼리로 생성할 수 있는가 하는 부분이었습니다. 구체적으로는 특정 조건에서는 join 을 실행하고 아니면 join 을 실행하지 않게 만들 수 있을까요? join 하는 테이블을 명시해야할텐데 그럼 테이블을 명시하고 on 이나 where 로 처리가 가능할지 궁금합니다 두 번째로는 where 절로 쿼리 파라미터를 BooleanBuilder 등을 통해서 쓸 수 있는데 join 의 on 절에 where 에 쓰던 방식 그대로 적용해도 되는지가 궁금합니다.(예외상황이 없는지) 감사합니다
- 미해결실전! Querydsl
8:13 질문
안녕하세요 영한님 감사합니다 ^_^ 08:13 보시면 em.flush를 해주시는데 필수인건가요 ?? flush을 쓰지 않아도 자동으로 나가는걸로 알고있습니다. clear만 해도 될까요?? 실험결과 clear만 써주면 되긴합니다만 flush를 별도로 또 호출해줘야 더 안전한 코드인가요??
- 미해결실전! Querydsl
막조인 차이점
안녕하세요 영한님 -막조인 차이- ===================================== ========================================= 안녕하세요 두개 다 연관관계없는 엔티티 조인인데 값도 똑같이 나오고 차이가 있나요 ??
- 미해결실전! Querydsl
changeTeam의문점
안녕하세요 영한(god)님 질문이 하나있습니다. 지금 changeTeam 을 이용하여 Member의 Team을 바꿔주시는데 이게 em.flush ,clear 하고 조회를 해오면 더티체킹으로 Member의 Team이 잘 바뀌어서(update) 조회됩니다. 근데 문제는 자바 컬렉션에서의 문제입니다 team.getMembers().add(this); 이 결과로 (팀)양쪽에 같은 맴버가 생기는거 같습니다.
- 미해결실전! Querydsl
QueryDsl 테스트 작성 질문있습니다.
그냥 데이터베이스는 여러개가 있어서 entityManager가 여러개 생기는 것을 @Qualifier 로 구분할 수 있더라구요그런데 테스트를 작성할 때 서비스용 디비와 테스트용 디비를 구분하면 테스트 디비의 entityManager 로 JPAQueryFactory 를 생성해야 하는데 이 부분을 어떻게 처리할 수 있을까요?
- 미해결실전! Querydsl
Querydsl SQLExpressions에 listagg 질문있습니다...!
안녕하세요, 김영한 선생님. Querydsl SQLExpressions에 listagg 관련하여 질문이 있습니다. 현재 Projections.constructoer 방식으로 조회한 결과를 Dto로 받고있는데요, SQLExpressions.listagg(컬럼, ",").withinGroup().orderBy(컬럼).getValue().as("listaggs") 로 select후 Dto에서 String으로 못받는데 String으로 받으려면 어떻게 해야 될까요?
- 미해결실전! Querydsl
PageableExecutionUtils 관련 질문
=========================================[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]안녕하세요, 강사님. PageableExecutionUtils을 따라해보았는데, 원하는대로 결과를 확인할 수 없어 질문 남깁니다. 현재, 컨트롤러에서 디버깅 걸면 return 하기 전에 페이징 처리된 결과를 확인할 수 있습니다. 물론, 컨트롤러에 @RestController, @RequiredArgsConsturctor를 모두 붙였습니다. 하지만, Postman으로 확인하니 Response가 이렇게 비어 있습니다. http://localhost:8080/v3/members?size=3&page=0를 크롬 검색창에 입력해도 {}가 출력됩니다. 혼자 해결하려 노력했는데도 해결하지 못하여 질문 남깁니다. 감사합니다.
- 미해결실전! Querydsl
springboot가 아닌 spring을 통한 q-type 컴파일
강의에서는 gradle을 통해 q클래스를 컴파일 하셨는데 gradle이나 maven을 둘다 사용하지 않고 있습니다. ant를 사용하고 있습니다. 혹시 관련 설정 방법을 설명해주실 수 있나요??
- 미해결실전! Querydsl
join_on_filtering 테스트 질문이요!!
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 안녕하세요! 강의 잘 듣고 있습니다. join_on_filtering()테스트에서 다음과 같이 assertthat으로 검증을 했는데 null이 반환되더군요 ㅠ.. @Testpublic void join_on_filtering(){ List<Tuple> result = queryFactory .select(member, team) .from(member) .leftJoin(member.team, team) .on(team.name.eq("teamA")) .orderBy(member.username.asc()) .fetch(); for (Tuple tuple : result) { System.out.println("tuple = " + tuple); } Tuple member1 = result.get(0); Tuple member2 = result.get(1); assertThat(member1.get(team.name)).isEqualTo("teamA"); 그래서 아래와 같이 수정하여 테스트 해봤는데 잘 동작됩니다. @Testpublic void join_on_filtering(){ List<Tuple> result = queryFactory .select(member, team) .from(member) .leftJoin(member.team, team) .on(team.name.eq("teamA")) .orderBy(member.username.asc()) .fetch(); for (Tuple tuple : result) { System.out.println("tuple = " + tuple); } Tuple member1 = result.get(0); Tuple member2 = result.get(1); assertThat(member1.get(team).getName()).isEqualTo("teamA"); assertThat(member2.get(member).getUsername()).isEqualTo("member2"); 이전에 했던 gruop() 테스트 코드에서는 다음과 같이 assertthat 에서 team.name으로 검증을 했었습니다. @Testpublic void group(){ List<Tuple> result = queryFactory .select(team.name, member.age.avg()) .from(member) .join(member.team, team) .groupBy(team.name) .fetch(); Tuple teamA = result.get(0); Tuple teamB = result.get(1); assertThat(teamA.get(team.name)).isEqualTo("teamA"); assertThat(teamA.get(member.age.avg())).isEqualTo(15);} 어째서 join_on_filtering() 에서는 team.name으로 참조를 하지 못하는것일까요??
- 미해결실전! Querydsl
현재 2:30 부분에 ...
현재 강의의 2:30부분에 fetchResults를 사용하려고 보니 decprecated 되어있는데 fetchResult대신에 쓸수있는 것이 혹시 있나요?? 설명에는 fetch()를 대신 사용하라는데 그런건가요?
- 미해결실전! Querydsl
페이징이나 정렬을 엔티티가 아닌 엔티티의 컬럼에 적용시킬 경우에는 어떻게 해야하나요?
안녕하세요. 질문이 있어서 글을 남깁니다! 만약 여러 팀들을 조회 할 때 페이징과 정렬을 팀들이 아닌 팀 안에 있는 멤버들한테 적용시킬 경우에는 어떤 방식으로 해야 할까요? 저는 팀들을 조회하고 그 팀들에 대한 멤버들을 다 따로 조회하였는데 N+1번의 쿼리가 나가서 비효율적인게 아닌가 하는 생각이 듭니다.
- 미해결실전! Querydsl
컨트롤러에서 Repository DTO를 사용해도 될까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)안녕하세요. 컨트롤러 구현에 관해 질문이 있습니다. 나중에 @Valid 를 사용해서 검증을 하게 된다면, Repository 레이어의 DTO 에 컨트롤러 레이어의 어노테이션이 들어가게 되는데요. Repository에 정의된 DTO를 컨트롤러 레이어에서 파라미터로 사용해도 되는지가 궁금합니다. 그렇지 않다면, 컨트롤러에서 사용하는 DTO 를 Repository에 정의된 DTO로 변환하는 작업이 필요할 것 같은데요, 영한님이 선호하는 방식은 어떤 방식인가요?
- 미해결실전! Querydsl
Entity Manager 의존관계 주입
안녕하세요! 강의 마지막 부분에 나온 EntityManager, JPaQueryFactory 생성자 주입 관련하여 궁금한 게 생겨서 질의드립니다. Lombok 의 @RequiredArgsConstructor 를 사용해서 EntityManager 와 JPAQueryFactory 를 생성자 주입하면 좋다. 라고 이야기하셨던 부분과 관련된 질의입니다. 이떄 JPAQueryFactory 객체를 빈으로 등록해놓은 뒤에 @RequiredArgsConstructor 를 사용하셨고 이는, EntityManager 는 빈으로 등록되어 있단 뜻인데 애플리케이션 로딩 시점에 EntityManager 도 자동 등록되나요?그렇다면 자동 등록되게 해둔 이유는 무엇인지도 궁금합니다!
- 미해결실전! Querydsl
외부 모듈 Q타입 생성 방법 문의
안녕하세요? 강의 잘 듣고 있습니다. 외부 모듈에 선언되어 있는 엔티티는 어떻게 Q타입을 생성되나요? 가령 한 프로젝트에서 공통으로 사용하는 엔티티 클래스가 별도 모듈로 따로 있을 경우 해당 모듈에 있는 Q타입 생성하는 방법이 궁금합니다. 구글링 해보니 package-info.java에 @QueryEntites를 이용하는 방법이 있던데, 이 방법 말고는 없나요?
- 미해결실전! Querydsl
fetchResults deprecated에 대해서
[질문 내용] intellij 에서 fetchResult가 deprecated 되었다고 해서 찾아보았는데 아래와 같이 fetch()로 받고, size()는 java에서 연산해주는 방식으로 처리해주고 있는데 강의에서 알려주신 fetchResult()가 fetch()에 대해서 가지는 이점이 무엇인지 알 수 있을까요? 또 이렇게 자바에서 count를 해준다면 db로 count query를 추가적으로 작성하는 것보다 db부담이 덜해 효율적이라고 생각되는데 .. 혹시 따로count query가 쓰이는 이유가 있을까요? 감사합니다.
- 미해결실전! Querydsl
여러 인덱스 중 하나를 타게 할 수 없을까요?
안녕하세요.^^ 강의 잘 듣고 열심히 공부 중입니다. jpa + querydsl 공부 도중에 궁금한 것이 하나 생겼습니다. querydsl 에서 여러 인덱스 중에 하나를 강제로 타도록 할 수는 없나요? native query로는 mysql 같은 경우 use index를 쓰면 되는데 querydsl 에는 어떻게 할 수 없을까 무식하게 갑자기 고민하고 고민하다가 혹시 방법이 있나 없나 궁금해서 질문 들여봅니다.
- 미해결실전! Querydsl
SQL Function 관련 (DB : postgresql)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] DB는 Postgresql 사용 중으로, .yml 에 아래와 같이 정의했습니다. dialect: org.hibernate.dialect.PostgreSQL10Dialect 사용하고 싶은 것은 날짜별로 Group By 하여 AVG 구하는 것인데요. 아래와 같이 sql 문 작성하였는데 에러가 납니다ㅜㅜ return queryFactory.select(Expressions.dateTimeTemplate(LocalDateTime.class, "DATE_FORMAT({0}, '{1s}')", osMonitorCollection.timestamp, ConstantImpl.create("YYYY-MM-DD")), osMonitorCollection.cpuUtilization.avg()) .from(osMonitorCollection) .groupBy(Expressions.dateTimeTemplate(LocalDateTime.class, "DATE_FORMAT({0}, '{1s}')", osMonitorCollection.timestamp, ConstantImpl.create("YYYY-MM-DD"))) .fetch(); org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode +-[METHOD_CALL] MethodNode: '(' | +-[METHOD_NAME] IdentNode: 'DATE_FORMAT' {originalText=DATE_FORMAT} | \-[EXPR_LIST] SqlNode: 'exprList' | +-[DOT] DotNode: 'osmonitorc0_.timestamp' {propertyName=timestamp,dereferenceType=PRIMITIVE,getPropertyPath=timestamp,path=osMonitorCollection.timestamp,tableAlias=osmonitorc0_,className=com.kt.cloud.redis.monitoring.domain.OsMonitorCollection,classAlias=osMonitorCollection} | | +-[ALIAS_REF] IdentNode: 'osmonitorc0_.os_monitor_collection_id' {alias=osMonitorCollection, className=com.kt.cloud.redis.monitoring.domain.OsMonitorCollection, tableAlias=osmonitorc0_} | | \-[IDENT] IdentNode: 'timestamp' {originalText=timestamp} | \-[QUOTED_STRING] LiteralNode: ''YYYY-MM-DD''
- 미해결실전! Querydsl
compileQuerydsl 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의를 처음 듣고 있는 학생입니다 강의 영상에서와 같이 프로젝트를 만든후 compileQueryDsl을 실행하니 Unable to load class 'com.mysema.codegen.model.Type'. 이 에러가 나오면서 컴파일이 되지 않습니다 도저히 답을 찾을 수가 없어서 질문남겨요
- 해결됨실전! Querydsl
Predicate 타입에 관한 질문
predicate Predicate teamNameEq(String teamName) { return hasText(teamName) ? team.name.eq(teamName) : null; } 에서 질문입니다. return타입은 BooleanExpression타입인데 Predicate타입에 받아도 컴파일이 안뜨는 것 같아서 Predicate는 Boolean을 return으로 받는 걸로 알고 있는데 BooleanExpression도 return으로 받나요 ?
- 미해결실전! Querydsl
Slice 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. slice 관련된 질문 이있습니다. slice querydsl에 slice를 사용할 때 id값으로 List<Long> ids = queryFactory.select(entity.id).distinct() .from(entity) .innerJoin(menu).on(menu.store.id.eq(entity.id)) .where( entity.id.lt(cursorId) ) .orderBy(entity.id.desc()) .limit(size) .fetch(); 이렇게 id 값으로 less than 을 사용해서 중복을 제거 하는데, 만약 title 과 같이 order by 가 다양하게 들어가게 되면 중복이 가능한 title로 인해서 pagination 에서 중복 데이터가 불러와 진다고 생각 이듭니다. 이런경우 에는 어떤 식으로 구현 하면 되나요? List<Long> ids = queryFactory.select(entity.id).distinct() .from(entity) .innerJoin(menu).on(menu.store.id.eq(entity.id)) .where( entity.id.lt(eneityData.getTitle()) ) .orderBy(entity.title.desc()) .limit(size) .fetch();