org.apache.ibatis.type.TypeException: не удалось установить параметры для сопоставления: ParameterMapping - PullRequest
0 голосов
/ 03 сентября 2018

У меня ошибка при сравнении дат в ibatis в Springboot 2.0, и у меня нет идей.

Мой Mapper выглядит следующим образом (с использованием MySql):

@Select("select count(s.id,r.date) from eshrsys.score s join eshrsys.round on (s.round_id = r.id) where r.date > '#{date,jdbcType=DATE}'")
Integer getScoreCountFromDate(Date date);

Я передаю действительный объект java.sql.date, который не является нулевым. Но я получаю эту ошибку, ссылаясь на сравнение дат:

2018-09-02 21: 14: 23.999 ОШИБКА 5644 --- [nio-8088-exec-2] o.a.c.c.C. [. [. [/]. [dispatcherServlet]: Servlet.service () для сервлет [dispatcherServlet] в контексте с путем [] вызвал исключение [Ошибка обработки запроса; вложенное исключение org.mybatis.spring.MyBatisSystemException: вложенное исключение org.apache.ibatis.type.TypeException: не удалось установить параметры для отображение: ParameterMapping {property = 'date', mode = IN, javaType = class java.sql.Date, jdbcType = DATE, numericScale = null, resultMapId = 'null', jdbcTypeName = 'null', выражение = 'null'}. Причина: org.apache.ibatis.type.TypeException: ошибка установки ненулевого значения для параметр # 1 с JdbcType DATE. Попробуйте установить другой JdbcType для этот параметр или другое свойство конфигурации. Причина: java.sql.SQLException: индекс параметра вне диапазона (1> число параметры, который равен 0).]

Я пробовал несколько различных обходных путей: от преобразования входных данных до строки перед их отправкой, удаления одинарных кавычек до воспроизведения с помощью jdbcType. Ничего не сработало.

1 Ответ

0 голосов
/ 03 сентября 2018

Я наконец понял это, оказалось, что это совсем другая проблема, чем я подозревал. Простое исправление ошибки, описанной выше, заключается в удалении одинарных кавычек вокруг '# {date, jdbcType = DATE}'.

Я сделал это изначально, но получал синтаксическую ошибку MySQL 'near r.date', которая, как я думал, должна была быть связана с моим сравнением дат, но это не так! В моем заявлении «count (s.id, r.date)» в начале я жаловался на дату. Замена этого на 'count (*)' исправила это. И меня разблокировали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...