기본 쿼리에서 다중 위치 절이 작동하지 않는 이유
@Query(
nativeQuery = true,
value =
"SELECT td.trip_date, td.trip_code, td.trip_distance, td.trip_travel_time, tu.status, tu.pickup_drop_time, u.id, u.user_name\n"
+ "FROM trip_details td JOIN trip_users tu ON tu.trip_details_trip_id=td.trip_id \n"
+ "JOIN users u ON u.id=tu.trip_user_id \n"
+ "WHERE td.trip_date BETWEEN :fromDate AND :toDate \n"
+ "AND u.id =: userId")
List<Object> getMobileForUpComingTripDetails(
@Param("userId") Integer userId,
@Param("fromDate") Date fromDate,
@Param("toDate") Date toDate);
IT에서 오류 발생
Caused by: java.lang.IllegalStateException: Using named parameters for method public abstract java.util.List com.dao.interfaces.TripDetailsDao.
getMobileForUpComingTripDetails(java.lang.Integer,java.util.Date,java.util.Date) but parameter 'userId' not found in annotated query 'SELECT td.trip_date, td.trip_code, td.trip_distance, td.trip_travel_time, tu.status, tu.pickup_drop_time, u.id, u.user_name
FROM trip_details td JOIN trip_users tu ON tu.trip_details_trip_id=td.trip_id
JOIN users u ON u.id=tu.trip_user_id
WHERE td.trip_date BETWEEN :fromDate AND :toDate
AND tu.trip_user_id = : userId'!
하지만 우리가 싱글을 사용할 때 조항이 작동합니다.
@Query(
nativeQuery = true,
value =
"SELECT td.trip_date, td.trip_code, td.trip_distance, td.trip_travel_time, tu.status, tu.pickup_drop_time, u.id, u.user_name\n"
+ "FROM trip_details td JOIN trip_users tu ON tu.trip_details_trip_id=td.trip_id \n"
+ "JOIN users u ON u.id=tu.trip_user_id \n"
+ "WHERE td.trip_date BETWEEN :fromDate AND :toDate")
List<Object> getMobileForUpComingTripDetails(
// @Param("userId") Integer userId,
@Param("fromDate") Date fromDate,
@Param("toDate") Date toDate);
그리고 제 대답은
[
{
"tripDate": "15/02/2022",
"tripCode": "2sdfsdfklsfj0001",
"userName": "jkl.com",
"userId": 204
},
{
"tripDate": "15/02/2022",
"tripCode": "220xsdjffksf0001",
"userName": "abc.com",
"userId": 210
},
]
하지만 제 문제는 queryParmas userId에 기반을 두고 있습니다. 그래서 저는 오류가 발생하는 여러 개의 조항을 추가했습니다. 그것을 도와주세요.
그래서 당신이 오류 메시지를 볼 때 그것은 분명히 매개 변수가userId
쿼리에서 찾을 수 없습니다.쿼리에 입력된 오타 때문입니다.
+ "AND u.id =: userId")
다음과 같아야 합니다.
+ "AND u.id = :userId")
오류 메시지를 읽으면 항상 디버깅에 도움이 됩니다.
언급URL : https://stackoverflow.com/questions/71175406/why-multiple-where-clause-not-woking-in-nativequery
'programing' 카테고리의 다른 글
Firebase 캐시를 바이패스하여(Android 앱에서) 데이터를 새로 고치는 방법은 무엇입니까? (0) | 2023.06.14 |
---|---|
마이그레이션 변경 열을 FK로 후속 처리한 후 실패 취소 (0) | 2023.06.14 |
URL에서 마지막 슬래시 이후의 모든 항목을 가져오는 방법은 무엇입니까? (0) | 2023.06.14 |
'List' 유형은 'List' 유형의 하위 유형이 아닙니다. (0) | 2023.06.14 |
Vuex, next, localStorage, 상태 덮어쓰기 (0) | 2023.06.14 |