2016-02-23 3 views
1

Я получаю следующее исключение:Spring: InvalidDataAccessApiUsageException?

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()); 

Почему я получаю это ошибка? Кажется, что два параметра DateTime в реализации совпадают с параметрами в моем методе?

+1

Использование 'java.util.Date' вместо Joda' DateTim e' в методе 'getPersonBetweenDates'. Вы можете использовать метод 'toDate' для преобразования jQuery' DateTime' в 'java.util.Date'. –

+0

Не могли бы вы отредактировать отредактированный код? я не совсем понимаю, что вы имеете ввиду – java123999

ответ

3
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 метод для преобразования DateTime в Date:

personRepo.getPersonBetweenDates(new DateTime().withTimeAtStartOfDay().toDate(), DateTime.now().toDate()); 
Смежные вопросы