riverrevir / searchPID

0 stars 1 forks source link

#6 JPQL 특정 컬럼 조회 및 distinct #16

Open riverrevir opened 2 years ago

riverrevir commented 2 years ago

기존의 Symbol 테이블에서 symbol_disigner 컬럼만 뽑고 싶었지만, [No converter found capable of converting from type](https://tte-yeong.tistory.com/93) 에러가 발생하였다. 또한 symbol_disigner는 중복으로 들어갈 수 있었기에 중복된 디자이너를 제외한 디자이너 리스트만 전송해주는 API가 필요로 한다.

riverrevir commented 2 years ago

1)JPQL의 특정 컬럼을 조회하는 방법은 특정 컬럼만 조회할 interface를 구현하는 것이다.

public interface DesignerList{
    String getSymbolDesigner();
}

이런 식으로 구현된 인터페이스를 Repository에서 쿼리문을 작성 후 사용할 수 있다. 하지만 이 부분은 조금 더 테스트가 필요하다. 이유는 2에서 설명하겠다.

riverrevir commented 2 years ago

2)특정 컬럼만 조회하는 부분은 1을 통해서 성공하였으나, 계속해서 null 값이 출력되었다. @Query(value = "SELECT DISTINCT s.symbolDesigner FROM symbol s") 아무래도 쿼리를 잘못 작성한 것 같다.

riverrevir commented 2 years ago

3)nativeQuery = true를 사용하여 JPQL을 사용하지 않고 SQL을 사용하여 해결하였다.

@Query(value = "SELECT DISTINCT symbol_designer FROM symbol",nativeQuery = true)

중복 제거 된 디자이너들의 리스트들을 반환한다.

riverrevir commented 2 years ago

4)JPQL을 사용하여 해결하는 방법을 찾아내었다. 최종적으로 이렇게 작성하였다.

@Query(value = "SELECT DISTINCT s.symbolDesigner FROM symbol s")
    List<String> findDistinctSymbolDesigner();

아무래도 2에서 오류는 JPQL 명명법을 제대로 숙지하지 않아서 생긴 오류같다.