Как исправить «ОШИБКА: Неверное значение DATETIME: %%» в данных весны? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть страница, которая запрашивает список элементов с функцией поиска.

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

WARN  SQL Error: 1525, SQLState: HY000
ERROR Incorrect DATETIME value: '%%'

Я использую проект Eclipse EE maven (весенняя загрузка с данными о пружинах) с 1.8 Java в Windows 10. Настройка Dev по умолчанию в MySql. У меня одинаковые библиотеки на обоих ноутбуках.

РЕПО:

findAll(request, "%" + f.getSearchField() + "%");

Запрос:

@Query( value = "SELECT cl from ConnectionLog cl WHERE cl.user.login LIKE :search OR cl.user.firstName LIKE :search OR cl.user.lastName LIKE :search OR CONCAT( cl.user.lastName,  ' ', cl.user.firstName ) LIKE :search OR CONCAT( cl.user.firstName,  ' ', cl.user.lastName ) LIKE :search OR cl.lastSeen LIKE :search OR cl.browser LIKE :search OR cl.operatingSystem LIKE :search")
    Page<ConnectionLog> findAll(Pageable pageable, @Param("search") String search);

Поле lastSeen является столбцом DATE. Модель:

@Column(name = "last_seen")
@Temporal(TemporalType.TIMESTAMP)
@JsonProperty
@JsonSerialize(include = Inclusion.NON_NULL)
private Date lastSeen;

Как я мог заставить эту работу? Почему это работает на одном компьютере, а не на другом?

1 Ответ

0 голосов
/ 24 мая 2019

Я отвечаю на свой вопрос, потому что все-таки нашел решение.Не уверен, что это хорошо, но это работает ...

Я вынул '%' из вызова репо и добавил в @Query с CONCAT () и DATE_FORMAT ().

DATE_FORMAT(cl.lastSeen, '%Y %m') LIKE CONCAT('%', DATE_FORMAT(:search, '%Y %m'), '%')

Полный запрос:

@Query( value = "SELECT cl from ConnectionLog cl WHERE cl.user.login LIKE CONCAT('%', :search, '%') OR cl.user.firstName LIKE CONCAT('%', :search, '%') OR cl.user.lastName LIKE CONCAT('%', :search, '%') OR CONCAT( cl.user.lastName,  ' ', cl.user.firstName ) LIKE CONCAT('%', :search, '%') OR CONCAT( cl.user.firstName,  ' ', cl.user.lastName ) LIKE CONCAT('%', :search, '%') OR DATE_FORMAT(cl.lastSeen, '%Y %m') LIKE CONCAT('%', DATE_FORMAT(:search, '%Y %m'), '%') OR cl.browser LIKE CONCAT('%', :search, '%') OR cl.operatingSystem LIKE CONCAT('%', :search, '%')")
    Page<ConnectionLog> findAll(Pageable pageable, @Param("search") String search);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...