뭉지(moonz)
작은 발자국들의 위대한 여정
뭉지(moonz)
  • All (202)
    • Test Code (4)
    • 백엔드 개발하며 작성한 (27)
      • Spring (17)
      • 데이터베이스 (7)
      • 기억할 내용 (3)
    • 언어 (53)
      • Java (25)
      • node.js (7)
      • Python (21)
    • 클라우드 (6)
    • Algorithm & Data Structure (51)
      • 개념 (15)
      • 문제 풀이 (36)
    • 유용한 모든 것 (16)
    • monologue (7)
      • 업무 노트 (1)
      • 관리 로그 (0)
      • 내 이야기 공책 (6)
    • Project (2)
    • TroubleShooting (8)
    • 지식 (18)
      • Machine Learning (6)
      • Review (7)
      • Web (5)
    • Computer Science (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
뭉지(moonz)

작은 발자국들의 위대한 여정

[JPA] 쿼리 생성하는 메서드명의 keyword를 체크하자.
TroubleShooting

[JPA] 쿼리 생성하는 메서드명의 keyword를 체크하자.

2022. 6. 27. 20:01
반응형

에러

발생한 에러는 다음과 같습니다.

Caused by: java.lang.IllegalStateException: Operator SIMPLE_PROPERTY on imageId requires a scalar argument, found class {클래스명} in method {메서드명}({메서드의 인자 path}).

failed to creqte query ~~ 라고 하며 위와 같이 문제되는 메서드를 친절히 알려주는데, 해당 메서드가 쿼리를 만들어내지 못한다는 의미로 해석할 수 있습니다.

바로 아래 deleteAllByImageId() 메서드가 문제입니다.

@Repository
public interface ImageRepository extends JpaRepository<Image, Long> {
    // 생략
    void deleteAllByImageId(Iterable<? extends Long> imageIds);
}

원인

JPA는 정해놓은 규약에 따라 메서드로 선언해놓으면 이에 맞는 쿼리를 자동으로 생성해주는데, 그 규약에 지켜지지 않거나 인자를 매칭할 수 없으면 쿼리를 생성할 수 없게 됩니다.

위에서 제가 원했던 쿼리는 여러 imageId를 전달해서 이에 해당하는 데이터들을 제거하는 것이었습니다.

(실제 서비스를 진행할 때에도 데이터를 제거하는 방향이 맞는지 모르겠네요 제거하기보다 제거필드를 따로 만들어둘지??)

그럼 이제 지원되는 메서드명 keyword를 찾아봅시다.

In 키워드를 이용해서 인자로 전달되는 칼럼값에 해당하는 데이터들을 쿼리하도록 지원하네요!

해결

@Repository
public interface ImageRepository extends JpaRepository<Image, Long> {
    // 생략
    void deleteAllByImageIdIn(Iterable<? extends Long> imageIds);
}

해당 문서글에 JPA 메서드명에 대한 규약을 참고하고 작성합시다!

출처: https://stackoverflow.com/questions/60397201/spring-jpa-repository-operator-simple-property-on-jsonobject-requires-a-scalar

반응형
저작자표시 (새창열림)

'TroubleShooting' 카테고리의 다른 글

[Nginx] 파일 접근 시 Permission denied 오류 해결  (0) 2025.02.25
[Spring Security] permitAll() 적용되지 않는 이슈 해결  (0) 2024.05.21
[데이터 무결성 위반] nested exception is org.springframework.dao.DataIntegrityViolationException  (0) 2022.01.27
MySQL 삭제 후 재설치 에러 : The older version of MYSQL Installer  (4) 2021.12.24
[mustache 에러] com.samskivert.mustache.MustacheParseException: Section close tag with mismatched open tag 'if' != 'if sessionScope.principal'  (0) 2021.12.01
    'TroubleShooting' 카테고리의 다른 글
    • [Nginx] 파일 접근 시 Permission denied 오류 해결
    • [Spring Security] permitAll() 적용되지 않는 이슈 해결
    • [데이터 무결성 위반] nested exception is org.springframework.dao.DataIntegrityViolationException
    • MySQL 삭제 후 재설치 에러 : The older version of MYSQL Installer
    뭉지(moonz)
    뭉지(moonz)
    제가 깨달은 것을 정리하는 공간입니다. 🧡

    티스토리툴바