jdbc4.MySQLSyntaxErrorException: ошибка в вашем синтаксисе SQL; проверьте версию сервера MySQL для правильного синтаксиса для использования рядом с '))' в строке 1

0

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

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')  )' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_171]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_171]

мой запрос в репозитории:

@Query(value = "select count(1) from user_records upr  where RECORD_ID in  ( SELECT record_id FROM region_record_relation where region_id in :regionIds) ", nativeQuery = true)
public int findAllRecordsforRegionIds(@Param("regionIds") List<Long> regionIds);

Я не знаю, как решить эту проблему. Я использую базу данных Mysql.

show-sql включена. но все, что я получаю, это:

 2018-08-02 20:06:17.210  WARN 3764 --- [nio-8088-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 1064, SQLState: 42000
 2018-08-02 20:06:17.210 ERROR 3764 --- [nio-8088-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')  )' at line 1
 2018-08-02 20:06:17.231 ERROR 3764 --- [nio-8088-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')  )' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_171]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_171]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_171]
  • 0
    Начните с распечатки полученной строки запроса SQL.
  • 0
    Попробуйте убрать пробел в конце запроса.
Теги:
spring

1 ответ

2
Лучший ответ
@Query(value = "select count(1) from user_records upr  where RECORD_ID in  ( SELECT record_id FROM region_record_relation where region_id in :regionIds) 

Должно быть

@Query(value = "select count(1) from user_records upr  where RECORD_ID in  ( SELECT record_id FROM region_record_relation where region_id in (:regionIds))) 

Есть лучшие способы написать это, что было бы более эффективным. Но это должно решить ошибку.

  • 0
    спасибо, что работает сейчас. но я хотел бы знать, почему это не работает без скобок. во многих примерах я видел, что не было скобок, и это все еще работало ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню