Я пытаюсь проверить свой собственный JPA @Query с H2.
Мой собственный запрос выглядит следующим образом:
@Query(
value = "SELECT * FROM accounts " +
" WHERE 'account_name' LIKE LOWER(CONCAT('%', COALESCE(:searchTerm, ''), '%')) ",
countQuery = "SELECT count(*) FROM accounts " +
" WHERE 'account_name' LIKE LOWER(CONCAT('%', COALESCE(:searchTerm, ''), '%')) ",
nativeQuery = true
)
При написании модульного теста я получаю следующую ошибку H2:
Причина: org.h2.jdbc.JdbcSQLException: таблица "ACCOUNTS" не найдена;
Инструкция SQL: SELECT * FROM account, ГДЕ 'aws_account_name' LIKE
Нижний предел (CONCAT ('%', COALESCE (?, ''), '%'))? [42102-197]
Я могу исправить ошибку H2, изменив синтаксис SQL, указав имя таблицы в двойных кавычках:
@Query(
value = "SELECT * FROM \"accounts\" " +
" WHERE 'account_name' LIKE LOWER(CONCAT('%', COALESCE(:searchTerm, ''), '%')) ",
countQuery = "SELECT count(*) FROM \"accounts\" " +
" WHERE 'account_name' LIKE LOWER(CONCAT('%', COALESCE(:searchTerm, ''), '%')) ",
nativeQuery = true
)
ОДНАКО, тогда мой MySQL (фактическая не тестовая среда) жалуется:
Причина: java.sql.SQLSyntaxErrorException: у вас есть ошибка в вашем
Синтаксис SQL; проверьте руководство, которое соответствует вашему серверу MySQL
версия для правильного синтаксиса для использования рядом с «учетными записями» ГДЕ
'account_name' LIKE LOWER (CONCAT ('%', COALESCE ('ab', ''), 'в строке 1
Как я могу проверить этот собственный запрос с MySQL и H2?
Причина, по которой я использую собственный запрос вместо JPQL, заключается в том, что мне нужно выполнять поиск без учета регистра и разрешать сопоставление "содержит".