programing

기본 쿼리에서 다중 위치 절이 작동하지 않는 이유

css3 2023. 6. 14. 22:06

기본 쿼리에서 다중 위치 절이 작동하지 않는 이유

 @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