먼저 예시를 살펴보자
- select이후 new 명령어를 사용한다. 생성자가 맞는 DTO가 필요하다. 위의 예시일 때 DTO는 다음과 같다.
public class MemberDto {
private Long id;
private String username;
private String teamName;
public MemberDto(Long id, String username, String teamName) {
this.id = id;
this.username = username;
this.teamName = teamName;
}
}
만약 Enum을 통해 비교한다면 어떻게 사용해야 할까?
@Query(value = "select distinct new com.woowacourse.naepyeon.service.dto.WrittenMessageResponseDto"
+ "(m.id, r.id, r.title, t.id, t.name, m.content, m.color, "
+ "case when r.recipient = com.woowacourse.naepyeon.domain.rollingpaper.Recipient.MEMBER then p.nickname "
+ "when r.recipient = com.woowacourse.naepyeon.domain.rollingpaper.Recipient.TEAM then t.name "
+ "else '' end) "
+ "from Message m"
+ ", Rollingpaper r"
+ ", Team t"
+ ", TeamParticipation p "
+ "where m.rollingpaper.id = r.id "
+ "and r.team.id = t.id "
+ "and p.team.id = t.id "
+ "and m.author.id = :authorId "
+ "and (p.member.id = r.member.id or r.member.id is null)")
Page<WrittenMessageResponseDto> findAllByAuthorId(@Param("authorId") final Long authorId, final Pageable pageRequest);
위와 같이 주소.enum값 을 통해 나타내자
'공부 > Spring' 카테고리의 다른 글
스프링 데이터 JPA의 반환타입을 알아보자 (0) | 2022.08.25 |
---|---|
[스프링 데이터 JPA] 파라미터 바인딩 종류와 컬렉션 파라미터 바인딩 (0) | 2022.08.25 |
스프링 데이터 JPA에서 쿼리 메소드 기능을 알아보자 (0) | 2022.08.25 |
순수 JPA 기반 리포지토리와 차이점을 확인해보자 (0) | 2022.08.25 |
[JPA] 페치 조인 (0) | 2022.07.18 |
댓글