본문 바로가기

Programming!

spring data jpa의 @Query nativeQuery의 IN 절 처리.

오늘 좀 시간을 보낸 문제

- 기존 jpa의 sql이 복작도가 증가함에 따라 nativeQuery를 사용하게 됨.

- IN 절을 기존과 같이 o.enumTypes in :enumTypes 를 그대로 사용해서 @Param으로 넘김

   이때 @Param의 List는 enum클래스임 List<EnumType>

- 일반 jpql이였을 경우는 결과가 잘나옴.


- 그러나 nativeQuery로 변경 후에는 결과가 나오지 않음. 에러 없음.

- 원인은 nativeQuery사용시에는 IN절에 들어가는 Param List에는  String, Long 과 같은 타입만 허용됨.



....

and fvd.vendorDivisionType in :vendorDivisionTypes 

...


- 수정전

List<Faq> findByXXXXXX(@Param("vendorDivisionTypes") List<VendorDivisionType> vendorDivisionTypes);


- 수정후

List<Faq> findByXXXXXX(@Param("vendorDivisionTypes") List<String> vendorDivisionTypes);