JPA
Data JPA collection 파라미터 바인딩
혀눅짱
2023. 10. 11. 14:43
이번 글은 @Query 어노테이션을 이용한 쿼리메소드에 일반 변수가 아닌 리스트 변수를 파라미터로 바인딩하는 방법이다.
이론적으로 중요한 부분은 아니지만 그냥 까먹을때 보면 좋을 거 같아서 짧게 적어둔다.
@Query("select m from Member m where m.name in :names")
List<Member> findByNames(@Param("names") List<String> names);
in절에 들어갈 값들을 리스트로 바인딩한다 파라미터타입이 리스트고 나머진 일반 변수 바인딩이랑 다를게 없다.
호출하는 부분에서
@GetMapping("collectionParamBindingTest")
public List<Member> collectionParamBindingTest(){
return memberDataJpaRepository.findByNames(Arrays.asList("userA","userB"));
}
해당 리스트에들어갈 값들을 세팅 후 메소드를 호출해서 바로 리턴한다.
[
{
"regDt": "2023-10-11T14:39:02.761201",
"modDt": "2023-10-11T14:39:02.761201",
"id": 1,
"email": null,
"pw": null,
"name": "userA",
"address": {
"city": "서울",
"street": "1",
"zipcode": "1111"
},
"memberRole": null
},
{
"regDt": "2023-10-11T14:39:02.815706",
"modDt": "2023-10-11T14:39:02.815706",
"id": 2,
"email": null,
"pw": null,
"name": "userB",
"address": {
"city": "서울",
"street": "1",
"zipcode": "1111"
},
"memberRole": null
},
{
"regDt": "2023-10-11T14:39:03.827139",
"modDt": "2023-10-11T14:39:03.827139",
"id": 485,
"email": null,
"pw": null,
"name": "userB",
"address": {
"city": "진주",
"street": "2",
"zipcode": "2222"
},
"memberRole": null
}
]
결과가 정상적으로 출력된다.