-
[JPA SQL (JPQL)] @Query 작성했더니 빈 값 리턴🩸 삽질의 추억 2024. 4. 18. 16:09728x90
상황
spring boot 3.2.x 사용,
@Query 로 SQL 직접 작성한 메소드 실행 시에 빈값이 리턴 됨.
어노테이션 없는 기본 메소드는 잘 실행되는데?
@Query("SELECT t FROM TransactionHistory t " + "WHERE t.senderAccountId = :accountId OR t.receiverAccountId = :accountId ORDER BY t.createdAt DESC") List<TransactionHistory> findByAccountId(@Param("accountId") String accountId);
- String type 의 Param 을 넘김,
- Controller 에서 다음과 같이 작성
@RequestBody String
해결
swagger 상에서 "따옴표" 없이 execute 한다.
OR
sql 실행 전 내부 비즈니스 로직에서 따옴표를 제거해준다.
OR
🌟추천🌟
Controller 에서 @RequestBody String ~ 으로 작성하지 말고
RequestDTO 를 사용한다.
RequestDTO 의 String 에 대해서는 "" 따옴표 안에 문자열을 담아서 넘겨도 받아올땐 내부에서 따옴표가 제거된다.
삽질한 이유
따옴표와 함께 넘겼기 때문
swagger 에서 기본적으로 "" 으로 기본 세팅해놔서 당연히 맞다고 생각하고 따옴표 안에 string 넣어서 사용함
어쩐지 로그를 찍어보면 작은 따옴표 안에 큰 따옴표가 들어가 있었다.
아래는 잘못된 쿼리
where t1_0.sender_account_id='"550e8400-e294-1d4a-716446655440000"' or t1_0.receiver_account_id='"550e8400-e294-1d4a-716446655440000"'
swagger 에서 따옴표 없이 String 만 넘기면 올바른 쿼리문이 된다.
where t1_0.sender_account_id='550e8400-e294-1d4a-716446655440000' or t1_0.receiver_account_id='550e8400-e294-1d4a-716446655440000'
728x90'🩸 삽질의 추억' 카테고리의 다른 글
[Spring Boot] Multiple DataBases 를 사용하는 환경에서 table이 자동으로 생성되지 않음(ddl-auto) (0) 2024.04.20 [보안] HTTPS/SSL/MAC/전자서명 - 헷갈렸던 개념 한줄 씩 정리 (1) 2024.04.20 [Spring Boot] swagger 로 테스트 중, body를 넘기는데 null 값이 들어왔다고 함 (0) 2024.04.17 [NCP, Docker] ssh 서버에 docker compose up 으로 Spring Boot + MongoDB 한번에 run 하기 (0) 2024.04.14 [Docker+원격서버] 플랫폼 호환- 옵션 부여/compose.yml 에 작성 (0) 2024.04.14