Spring

Spring - JPA distinct 여러 컬럼 사용하기

codeManager 2024. 3. 12. 22:34
반응형

 

Spring JPA를 사용할 때 distinct를 사용하는 경우 @Query 어노테이션을 사용해서 처리합니다.

 

distinct 여러 컬럼을 할 때의 코드에 대해서 알아보겠습니다.

 

 

JPA repository 코드

    @Query(value = "select distinct type, code from table", nativeQuery = true)
    List<Object> findDistinct();

 

distinct 컬럼 한 개일때는 String으로 처리가 가능하지만, 두개 이상의 경우에는 Object로 결과값을 받아야 합니다.

 

 

 

JPA repository 조회하는 Service layer

    List<Object> objects = repository.findDistinct();

    List<Result> result = objects.stream()
            .map(x ->{
                Object[] obj = (Object[]) x;
                String type = (String) obj[0];
                String code = (String) obj[1];
                return new Result(type, code);

            }).collect(Collectors.toList());

 

Object를 Object[] 로 casting해서 [0], [1] 값을 가져오면 됩니다.

 

 

반응형