1. 문제 사항
상품 클래스와 카테고리 클래스가 1:N 으로 매핑된 상태에서 Jpa의 쿼리 메서드를 이용해 상품 클래스를 카테 고리별로 조회를 시도하던 도중 아래의 에러가 발생했다.
java.lang.IllegalArgumentException: Parameter value [1] did not match expected type ....
2. 원인
상품 클래스에서 지정된 카테고리의 타입과 다른 타입으로 조회를 시도하여 객체 타입이 바인딩이 되지 않아 발생되었다.
ItemEntity.class
...
@ManyToOne
@JoinColumn(name = "category_id")
private Category category;
...
itemRepository.class
List<Item> findAllByCategory(Long categoryId);
itemService.class
Category category = this.categoryRepository.findByCategoryName(categoryName);
this.itemRepository.findAllByCategory(category.getId()).forEach(item -> {
....
});
상품엔티티에서 카테고리의 타입은 객체타입인데 카테고리 아이디로 찾으려고 하니 문제가 발생한듯하다.
3. 해결
객체 타입으로 변경해 준 뒤 테스트를 하니 잘 작동하였다.
itemRepository.class
List<Item> findAllByCategory(Category category);
itemService.class
Category category = this.categoryRepository.findByCategoryName(categoryName);
this.itemRepository.findAllByCategory(category).forEach(item -> {
....
});
4. 참고
'Trouble Shooting' 카테고리의 다른 글
리소스를 HTTPS 프로토콜 호출로 인한 ERR_SSL_PROTOCOL_ERROR 발생, Mixed Content (0) | 2024.04.17 |
---|---|
AWS EC2 Gradle 배포 시 멈춤현상 (0) | 2022.05.04 |
QLRM 네이티브 쿼리 DTO type 오류 (0) | 2022.04.14 |
Spring boot와 h2 Database 연동 오류발생 (0) | 2022.04.10 |
[Hibernate Error] TransientPropertyValueException : object references an unsaved transient instance (0) | 2022.03.21 |