Репозиторий JPA Spring Boot РАВЕН НУЛЮ ,НАПРИМЕР, не работает

#sql #spring-boot #jpa

Вопрос:

Я фильтрую по имени, фамилии и номеру. Иногда я хочу искать по одному имени,иногда по имени и фамилии, иногда по всем.Операции LIKE и is null не работают.

Пример

имя:Адам фамилия:Макс номер:1235464 РАБОТАЕТ

имя:Адам фамилия:Макс нет:(Ноль) НЕ РАБОТАЕТ

         2021-09-13 15:45:48 ERROR 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.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause
oracle.jdbc.OracleDatabaseException: ORA-01722: invalid number
 

 @Transactional
    @Modifying
    @Query(value = "SELECT U.* FROM USER U  "
              "LEFT JOIN CV ON U.USERID=CV.USERID  "
              "JOIN PROFIL P ON P.CV_ID=CV.CV_ID  "
              "AND(:name is null OR P.name LIKE %:name% ) "
              "AND (:surname is null OR P.surname LIKE %:surname% ) "
              "AND (:no is null OR U.no=:no ) ", nativeQuery = true)
    public List<User> findByDynamicQuery(@Param("name") String name, @Param("surname") String surname, @Param("no") String no);
 

Комментарии:

1. Нам определенно нужно больше деталей, чтобы помочь вам.

2. Можете ли вы также опубликовать код вашего класса модели пользователя?

Ответ №1:

Мне понадобится код вашего класса модели пользователя, чтобы проверить это, но oracle.jdbc.OracleDatabaseException: ORA-01722: invalid number обычно это означает, что возникла проблема с преобразованием строки в число. Поскольку это работает не только в том случае, если у вас есть номер NULL , я подозреваю, что вы используете примитивные типы (например int , long ) вместо реальных классов чисел. Если это так, то замените int / long в вашей модели на Integer / Long .

Поделитесь дополнительными данными, если это не так, и мы постараемся помочь.