inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

자식객체 조건을 걸어 부모객체를 가지고 왔을때 부모객체 밑에 자식객체 데이터가 그대로입니다.

450

김준엽

작성한 질문수 9

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

안녕하세요 궁금한게 있어 글을 남깁니다.

예를 들어서 유저가 있고 유저가 쓰는 게시글이 있습니다.

유저 1 : 게시글 N // 유저 1 : 차단 N

게시글 1 : 채팅 N // 유저 1 : 채팅 N

이 상황에서 질문 글 조회 할 경우 글 객체에 채팅 리스트들을 가져다가 쓰고 있습니다.

이제 질문입니다.

저 질문글에 제목 질문 그리고 채팅방이 몇개있는지를 표현 하고 싶은데

차단한 유저의 채팅방은 카운트를 안했으면 합니다.

유저 인덱스로 내가 차단한 유저 리스트를 가지고 온뒤

게시글을 조회할때

select *

from Qa q join Room r on q.idx = r.q.idx

where r.댓글작성자Idx not in (차단자 리스트)

해서 게시글을 조회 하였을경우

 

게시글을 가지고 온뒤 객체 안을 보면

여전히 차단자 리스트에 포함되어있는 채팅방까지 나옵니다.

이럴 경우 자식리스트 (oneToMany) 객체의 조건을 걸고 싶을땐 어떻게 해야하나요 ?

 

질문을 최대한 정리 하려했는데도 가독성이 좋지 못하네요 .

제 질문이 이해 안되시는 부분이 있다면 얘기 부탁드리겠습니다.

 

 

 

 

 

JPA java

답변 1

1

김영한

안녕하세요. 김준엽님

단순 조인을 사용했기 때문에 이렇게 동작하는 것이 맞습니다.

참고: https://www.inflearn.com/questions/33719

3가지 방법이 있습니다.

1: 엔티티 대신에 DTO로 조회합니다.

2: ROOM을 기준으로 조회합니다.

3: 엔티티로 조회하고 싶으면 연관관계 있는 상태로 필터링 하려면 fetch join을 사용해야 합니다.

추가로 주의할 사용도 있으니 다음을 확인해주세요.

https://www.inflearn.com/questions/15876

감사합니다.

0

김준엽

안녕하세요 답변 감사합니다. 



public List<Qa> qaList(Member member, String choose,List<Member> blockMembers) {
    return select(qa)
            .from(qa)
            .innerJoin(qa.chatRoomList, chatRoom)
            .fetchJoin()
            .where(qa.member.eq(member),
                    isSelectMember(choose),
                    chatRoom.aMember.notIn(blockMembers)
            )
            .fetch();
}
```

image

3번 엔티티로 조회 할경우 패치 조인으로 자식 컬렉션 리스트는 제외 되었으나

저는 qa 객체 안에 차단멤버가 채팅방을 제외한 객체를 뽑고 싶은데

조인을 할경우는 qa가 채팅방 수만큼 객체가 생깁니다.

qa 객체 하나만 나오면서 자식 객체 리스트에 조건을걸어 안나오게 하는방법은

없는걸까요 ?

 

 

 

0

김영한

안녕하세요. 김준엽님

JPA 기본편에서 설명하는 distinct를 다시한번 복습해주세요.

감사합니다.

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

29

2

inheritance startegy 선택시 고려사항

0

23

1

Entity 동등성 비교

0

21

1

실무 조언 관련 질문입니다.

0

47

1

H2데이터베이스 파일 생성

0

56

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

53

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

55

1

JPQL 메소드와 락

0

55

1

Delivery @OneToOne

0

60

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

94

2

UnsupportedOperationException 발생

0

86

3

H2 Database 연결이 안됩니다.

0

96

2

연관관계 매핑 질문드립니다.

0

86

2

h2데이터베이스 실행오류

0

108

2

persistence.xml

0

109

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

82

1

영속성 컨텍스트

0

66

1

JPA 프록시

0

98

1

Native Query와 MyBatis

0

70

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

87

1

임베디드 타입 예시 코드 관련 질문

0

115

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

95

3

인텔리제이 패키지 커서 단축키 질문

0

108

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

146

1