인프런 커뮤니티 질문&답변

dmalk k님의 프로필 이미지

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

스프링 데이터 JPA 적용2

"%" + itemName + "%"가 @Param에서 읽히지가 않아요

해결된 질문

23.11.27 20:19 작성

·

285

1

 
    @Override
    public List<Item> findAll(ItemSearchCond cond) {
        String itemName = cond.getItemName();
        Integer maxPrice = cond.getMaxPrice();
        if (StringUtils.hasText(itemName) && maxPrice != null) {
            //return repository.findByItemNameLikeAndPriceLessThanEqual("%" + itemName + "%", maxPrice);
            return repository.findItems(itemName , maxPrice);
        } else if (StringUtils.hasText(itemName)) {
            return repository.findByItemNameLike("%" + itemName+"%");
        } else if (maxPrice != null) {
            return repository.findByPriceLessThanEqual(maxPrice);
        } else {
            return repository.findAll();
        }
    }

JpaItemRepositoryV2에서 이름이랑 가격이 모두 있을 때
return repository.findItems(itemName, maxPrice); 이 코드를
return repository.findItems("%" + itemName + "%", maxPrice);로 변경하면

@Query("select i from Item i where i.itemName like :itemName and i.price <= :price ") List<Item> findItems(@Param("itemName") String itemName, @Param("price")Integer price);

여기 코드에서 @Param("itemName")이 itemName을 %itemName%으로 받아서 그런지

 

org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.; nested exception is java.lang.IllegalStateException: For queries with named 

이런 오류가 뜹니다
어떻게 해결할 수 있나요?

답변 1

2

David님의 프로필 이미지

2023. 11. 27. 21:26

안녕하세요. dmalk k님, 공식 서포터즈 David입니다.

@Param을 import 하셨을 때, import된 패키지가 spring data 패키지인지 확인 부탁드립니다.

감사합니다.

dmalk k님의 프로필 이미지
dmalk k
질문자

2023. 11. 27. 21:34

아하 이제 인식됩니다

감사합니다 :)

dmalk k님의 프로필 이미지

작성한 질문수

질문하기