1. ホーム
  2. java

[解決済み] 春です。InvalidDataAccessApiUsageException?

2022-02-03 23:41:59

質問

以下のような例外が発生します。

org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value did not match expected type. [java.util.Date (n/a)]; 
nested exception is java.lang.IllegalArgumentException: Parameter value did not match expected type [java.util.Date (n/a)]

以下は、私のリポジトリにあるクエリメソッドです。

 @Query("SELECT COUNT(entity) FROM Person entity WHERE trunc(entity.date) BETWEEN :startTime AND :endTime")
 int getPersonBetweenDates(@Param("startTime") DateTime var1, @Param("endTime") DateTime var2);

そして、私のコンポーネントでの実装です。

 int totalPersons = personRepo.getPersonBetweenDates(new DateTime().withTimeAtStartOfDay(), DateTime.now());

なぜこのようなエラーが発生するのでしょうか?どうやら、2つの 日付時間 のパラメータは、私のメソッドのパラメータと一致していますか?

どのように解決するのですか?

Parameter value did not match expected type. [java.util.Date (n/a)];

jodaの DateTime をメソッドパラメータで使用します。 java.util.Date のようにします。

@Query("SELECT COUNT(entity) FROM Person entity WHERE trunc(entity.date) BETWEEN :startTime AND :endTime")
int getPersonBetweenDates(@Param("startTime") Date var1, @Param("endTime") Date var2);

そして、クライアントコードの中で、もしいくつかの DateTime インスタンスを使用することができます。 toDate メソッドを使用して DateTimeDate :

personRepo.getPersonBetweenDates(new DateTime().withTimeAtStartOfDay().toDate(), DateTime.now().toDate());