해결된 질문
작성
·
298
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
이런 오류가 뜹니다
어떻게 해결할 수 있나요?
아하 이제 인식됩니다
감사합니다 :)