inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

176만명의 커뮤니티!! 함께 토론해봐요.

querydsl dto mapping & subquery 질문 남깁니다.

미해결

실전! Querydsl

안녕하세요 열심히 수업듣고 따라하고있는 수강생입니다. 먼저 매번 답변주셔서 감사합니다. 질문으로는 dto mapping 에서 @queryprojection 으로 직접 조회를 해야하는 상황입니다. 글 : 채팅방 1 : N 채팅방 : 채팅 1: N 일때 DTO 는 @Data public class QChatRoomDto { private QaType qaApart; private String qaContent; private String searchPlace; private String category; private Long chooseMemberIdx; // 채택 / 미채택 기준 private Long roomIdx; private Long otherMemberIdx; private String otherMemberNickname; private String otherMemberImgDto; private int qaCount; private String modifiedDate; private String recentlyMsg; private String recentlyMsgType; private Long notReadCount; @QueryProjection public QChatRoomDto(String qaContent, String searchPlace, String category, Long chooseMemberIdx, Long roomIdx, Long otherMemberIdx, String otherMemberNickname, String otherMemberImgDto, int qaCount, LocalDateTime modifiedDate, String recentlyMsg, String recentlyMsgType, Long notReadCount) { this.qaApart = QUESTION; this.qaContent = qaContent; this.searchPlace = searchPlace; this.category = category; this.chooseMemberIdx = chooseMemberIdx; this.roomIdx = roomIdx; this.otherMemberIdx = otherMemberIdx; this.otherMemberNickname = otherMemberNickname; this.otherMemberImgDto = otherMemberImgDto; this.qaCount = qaCount; this.modifiedDate = modifiedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); this.recentlyMsg = recentlyMsg; this.recentlyMsgType = recentlyMsgType; this.notReadCount = notReadCount; } } querydsl public Page<QChatRoomDto> myQuestionChatRoomList(Member questionMember, List<Member> blockMembers, QaStatusType qaStatusType, Pageable pageable) { return applyPagination(pageable, contentQuery -> contentQuery .selectDistinct(new QQChatRoomDto( qa.content.as("qaContent"), qa.searchPlace.as("searchPlace"), qa.category.name.as("category"), qa.selectMember.idx.as("chooseMemberIdx"), chatRoom.idx.as("roomIdx"), chatRoom.aMember.idx.as("otherMemberIdx"), chatRoom.aMember.nickname.as("otherMemberNickname"), chatRoom.aMember.memberImg.as("otherMemberImgDto"), chatRoom.qMember.qaList.size().as("qaCount"), chatRoom.modifiedDate.as("modifiedDate"), ExpressionUtils.as( JPAExpressions.select(chat.content) .from(chat) .where(chat.chatRoom.eq(chatRoom), chat.idx.eq( JPAExpressions.select(chat.idx.max()) .from(chat)) ), "recentlyMsg") , ExpressionUtils.as( JPAExpressions.select(chat.chatType) .from(chat) .where(chat.chatRoom.eq(chatRoom), chat.idx.eq( JPAExpressions.select(chat.idx.max()) .from(chat)) ), "recentlyMsgType"), ExpressionUtils.as( JPAExpressions.select(chat.count()) .from(chat) .where(chat.chatRoom.eq(chatRoom), chat.member.ne(questionMember), chat.readMsg.isFalse()), "notReadCount") ) ) .from(chatRoom) .join(chatRoom.qa, qa) .join(chatRoom.aMember, member) .where(chatRoom.qMember.eq(questionMember), isQaSelectMember(questionMember, qaStatusType), blockAMembersNotIn(blockMembers), chatRoom.idx.notIn( JPAExpressions.select(chatRoom.idx) .from(chatRoom) .where(chatRoom.isLeave.contains("_" + questionMember.getIdx() + "_"))), member.phoneNum.isNotNull() ) .orderBy(chatRoom.modifiedDate.desc())); } 이렇게 작업을 했습니다. 매우 이상한 쿼리이겠지만 저한텐 이게 최선이었습니다 ㅠ 여기서 궁금한점은 채팅룸 리스트를 뽑아야 하는데 recentlyMsg, recentlyMsgType 채팅 리스트의 최근 데이터를 가지고 오고싶었으나 subQuery에서 limit 1 이 먹히지 않아 저런 괴랄한? 쿼리를 만들어 작동은 되게 만들었습니다. 해서 dto mapping 할때 컬렉션 리스트를 뽑는 다른 방법이 있는지 궁금합니다. chatRoom.chatlist 를 반환하여 queryprojection에서 가공하려 했지만 에러가 뜨면서 chatList는 반환이 안되어 질문글 남깁니다. 감사합니다.

  • java
  • JPA
김준엽 댓글 1 좋아요 0 조회수 3233

강의 자료 문의입니다.

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요. 권철민 선생님 강의 너무 잘 듣고 있습니다. Classfication 완벽가이드 부터 컴퓨터 비전 수업을 듣고 머신러닝 강의를 들으러 왔어요. 이번 강의도 기대가 됩니당. 혹시 강의자료 따로 받아 볼 수 있을까요?? 자료에 필기하는게 습관이 되어서 꼭 있었으면 합니다 :)

  • 통계
  • 머신러닝 배워볼래요?
  • python
김동호 댓글 1 좋아요 0 조회수 323

em.persist에서 쓰기 지연 SQL 저장소의 성능에 관한 질문이 있습니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 영속성 컨텍스트 2 강의에 12분쯤 나오는 그림을 보면서 든 생각입니다. 예를 들어 회원 가입이나 게시글 및 댓글 올리기 같은 경우에는 insert가 하나씩 들어갈 것 같아 1차 캐시나 쓰기 지연 SQL 저장소에 차곡차곡 쌓이는 일이 없을 것 같은데요. 만약 한 트랜잭션 안에서 대량의 데이터를 select 해서 insert 하는 경우, 그런 데이터의 양이 1만건, 10만건을 넘어간다고 하면 1차 캐시 및 쓰기 지연 SQL 저장소에 10만건을 쌓아놓고 커밋할 때 DB에 차례대로 한 줄 씩 저장이 될 것 같습니다. 그럴 때 메모리가 터진다거나, 속도가 느려진다거나 과부하가 걸려 성능 제한이 걸리는 경우가 있을 것 같은데 이런 경우를 대비해서 따로 처리해야 하는 로직이나 개념이 있다면 알고 싶습니다!

  • java
  • JPA
JIN 댓글 3 좋아요 0 조회수 464

카프카 isr 질문 있어요

미해결

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

파티션 1번의 구성이 이렇게 나온다고 가정을 하면 Partition : 1 leader : 3 Replicas: 3,1,2 Isr: 3,1 2번 브로커 에서 장애가 발생해서 ISR에서 제외가 되었고 2번 브로커가 복구가 되면 ISR : 3, 1, 2로 바뀌어야 된다고 생각을 하는데 시간을 두고 기다려도 ISR: 3,1에서 바뀌지를 않더라구요. 이거 왜 이런거일까요..?

  • Kafka
  • 데이터 엔지니어링
봉민석 댓글 1 좋아요 0 조회수 369

퀴즈에 대한 피드백 부탁드립니다.

미해결

파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자

from random import * # 1 ~ 50 ''' 1 ~ 50은 다 출력, 5분 ~ 15분 사이의 승객은 "O"를 표시 ''' newlist = [] sum = 0 for i in range(1, 51): # 1 ~ 50, 굳이 time = randint(5,50) # 5 ~ 50분 if 5<=time<=15 in range(1, 51): newlist = "O" sum += newlist.count("O") print(f"[{newlist}] {i}번째 손님 ( 소요시간 : {time}분)") else: newlist = "" print(f"[{newlist}] {i}번째 손님 ( 소요시간 : {time}분)") print(f"총 탑승 승객 : {sum} 분") 저는 강사님께서 사용하신 cnt가 생각이 안나서, newlist=[]와 sum = 0으로 놓고 조건에 맞으면 "O"로 하고 count함수를 써서 sum에 업데이트 하는 방식으로 했는데요..(처음에 프로그램을 짤 때 강사님처럼 print 안에 "[O]"가 생각이 안났습니다 ㅠㅠ) 이 방식도 괜찮을까요??

  • range를잘쓰자
  • python
Ambition 댓글 1 좋아요 0 조회수 526

자바 스터디

미해결

자바를 새롭게 배우고 싶은데 동기부여 차원에서 스터디에 가입하고 싶은데 자리가 남은 스터디가 있을까요?

yonheart 댓글 0 좋아요 0 조회수 307

@Transcational 로 생성되는 프록시 실제 코드

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] @Transcational 로 Spring AOP 가 적용되어서 실제 객체를 담고있는 프록시 객체가 생성되는 것은 이해하였습니다. (질문1) 실제로 스프링이 생성해주는 프록시 객체 코드를 확인해보고싶은데 어떤 클래스를 확인하면 좋을까요? (질문2) '어떻게동작하지?' 하고 확인하려고 할 때마다 막히곤 합니다. 어떤 코드로 인해서 생성된 bean인지 확인하는 것에 어려움이 있는 것 같습니다. 앞으로 공부할 때 스프링으로 인해 생성되는 프록시 객체들의 실제 코드를 확인하기 위해서는 어떤 방법을 통해 확인할 수 있을까요? 항상 좋은 강의 올려주셔서 감사합니다. 도와주시는 서포터즈 분들도 수고가 많으십니다.

  • spring
LeeJiEun 댓글 1 좋아요 0 조회수 2065

질문 있습니다.

미해결

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

안녕하세요. 1번 노드 check를 DFS 호출 전 check[1] = 1 과 같이 하셨는데, 아래와 같이 DFS 안쪽 첫째 라인에 하는 건 어떨까요?? // ... const DFS = (v) => { checkArr[v] = 1 if (v === n) { answer++ } else { for (let i = 1; i <= n; i++) { if (graph[v][i] === 1 && checkArr[i] === 0) { DFS(i) checkArr[i] = 0 } } } } DFS(1)

  • javascript
  • 코테 준비 같이 해요!
ML 댓글 1 좋아요 0 조회수 310

1-A 질문

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하십니까, 1-A (난쟁이 문제)관련 질문 입니다. 테스트 코드는 잘 돌아가는 데 문제가 계속 틀렸다고 해서 질문 드립니다. 저는 조합으로 풀었습니다. https://www.acmicpc.net/source/54215134 항상 좋은 가르침을 주셔서 감사합니다.

  • C++
  • 코테 준비 같이 해요!
학습자 댓글 1 좋아요 1 조회수 236

mysql완전 삭제 후 재설치

미해결

비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지

MySQL workbench연결이 잘 안되어서 이것 저것 하다 보니까 MySQL version이 8.0이 깔렸네요.. MySQL version에 따라서 명령어가 달라지는 것 같구.. MySQL을 완전 삭제하고 재설치 할려고 합니다. MySQL완전 삭제 절차 좀 알려 주세요.

  • rest-api
  • HTML/CSS
  • aws
  • git
  • mysql
  • javascript
  • github
jksyk 댓글 2 좋아요 0 조회수 787

DB 인스턴스 awslearner 생성 요청이 실패했습니다.

미해결

AWS(Amazon Web Service) 입문자를 위한 강의

[4-5] RDS 실습-1부에서 영상과 같이 작업을 완료한 후 데이터베이스 생성을 누르면 아래와 같이 에러가 발생하는데 어떻게 해결해야 될까요? The DB subnet group doesn't meet Availability Zone (AZ) coverage requirement. Current AZ coverage: ap-northeast-2a. Add subnets to cover at least 2 AZs. (Service: AmazonRDS; Status Code: 400; Error Code: DBSubnetGroupDoesNotCoverEnoughAZs; Request ID: adc0a208-3d58-4b88-876b-195b4f751aa5; Proxy: null

  • aws
공부하자 댓글 1 좋아요 2 조회수 1809

@target 적용 여부가 애플리케이션 로딩 이후에 결정되는 이유

미해결

스프링 핵심 원리 - 고급편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] @target 의 동작 방식 자체는 이해가 되는데, @target 이 적용 여부가 애플리케이션 로딩 이후(빈이 모두 생성된 이후)에 결정되어야 하는 이유가 궁금합니다. 빈으로 등록될 객체가 생성된 직후, Spring 빈 후처리기가 동작할 때, 그 객체 클래스 및 상속 관계에 있는 클래스들에, 어떤 annotation 들이 달려있는지 판단 가능하다고 생각했습니다. 때문에, Spring 이 AspectJ Expression 사용 시 @target 조건만 주고 다른 조건으로 한정하지 않을 때, 모든 빈에 대해 proxy 를 생성하려 시도한다는 점이 잘 이해가 되지 않았습니다. 제가 뭔가 놓치고 있는 지점이 있는 것 같은데, 지적 부탁드립니다. 좋은 강의 감사합니다.

  • spring
  • 디자인-패턴
davin111 댓글 1 좋아요 0 조회수 2210

Job 생성자 관련 질문입니다.

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

위의 생성자를 이용하여 아래와 같은 코드로 job 객체를 따로 생성해보려고 하였습니다. 맞는 생성자 instance가 없다고 하며 코드가 정상 동작 하지 않았습니다. JobSerializer::PushJob의 과정을 똑같이 따라한 것 같은데 동작이 안되는 이유를 모르겠습니다. 원인을 알고 싶어 찾아보았으나 제가 template 에 대한 이해가 미숙하여 어떤 이유로 객체 생성이 되지 못하는 건지 모르겠습니다.

  • network
  • windows-server
  • MMORPG
OliveGr 댓글 1 좋아요 0 조회수 657

for문 말고 for of문 쓰시는 이유가 있나요?

미해결

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

저는 for문이 더 익숙해서 for문을 주로 쓰는데 for of문을 쓰는게 더 나은가 해서요

  • javascript
  • 코테 준비 같이 해요!
김승현 댓글 1 좋아요 0 조회수 338

2019로 다운받았는데요

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

첫번째 사진처럼 나와서 강의대로 두번째처럼 입력했는데 F5누르니까 디버깅창? 이 안뜨고 그냥 종료됩니다 ㅠㅠ 뭣때문에 그런건가요 ㅠㅠ

  • C#
kingsejung 댓글 1 좋아요 0 조회수 344

Quiz 2에서 질문있습니다.

해결됨

나도코딩의 자바 기본편 - 풀코스 (20시간)

quiz2 같은 경우에 키를 115 121처럼 특정한 키를 정해놓고 탑승 가능 여부를 판단하는 코드인데요, boolean 끼리는 비교가 안된다는 오류가 떠서 실행은 안됐지만 제가 시도한것처럼 특정한 키를 정해놓는 것이 아닌 120 이상인 사람은 탑승 가능, 미만인 사람은 탑승 불가능 하다는 코드를 짜는 법을 알고 싶습니다!

  • java
  • oop
이용진 댓글 1 좋아요 0 조회수 419

인기 태그

인프런 TOP Writers

주간 인기글