#java #spring-boot #jpa #localdatetime
Вопрос:
Это метод репозитория, который, как вы увидите, выбирает столбцы из таблицы сущностей UserDetail по created_date, но у меня возникает ошибка При вводе этого значения 2021-10-14 23:16:31
@Query(value = "SELECT usd.phoneNumber,usd.textMessage FROM UserDetail entity usd WHERE usd.created_date=:createdDate", nativeQuery = true)
UserDetail findByCreatedDate(LocalDateTime createdDate);
Я пытаюсь ввести формат строки параметров на уровне сервиса и преобразовать его в локальное время, как показано в следующем коде:
@Override
public UserDetail findByCreatedDateWhenUserTypeOwnInfo(String createdDate) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(createdDate, formatter);
return this.userDetailRepository.findByCreatedDate(dateTime);
}
Я получаю эту ошибку:
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [az.expressbank.expressbankproject.data.model.UserDetail]
Как решить эту проблему>?
Комментарии:
1. Ты пробовал
SELECT * FROM UserDetail ...
?2. Что вы имеете в виду, я вас не понимаю.
3. Если вы измените запрос на
SELECT * FROM UserDetail ...
, это сработает?
Ответ №1:
Вы используете «именованные параметры», поэтому, похоже, вам нужно добавить @Param в свой запрос. подобный этому:
UserDetail findByCreatedDate(@Param("createdDate") LocalDateTime createdDate);
Комментарии:
1. Я делаю это, но прямо сейчас я получаю эту ошибку java.sql.SQLSyntaxErrorException: таблица «test.test.userdetail» не существует, но все верно.
2. Является ли ошибка именно такой? с именем таблицы в нижнем регистре ? Как называется ваша настоящая таблица?