Итак, я пытаюсь написать собственный конструктор запросов JPQL. У меня есть конечная точка что-то вроде:
/api/library/authors/search?query=test tested
На служебном уровне этот query
параметр будет преобразован в что-л, как этот запрос JPQL:
SELECT t FROM Author t WHERE t.fullName LIKE '%test tested%'
OR t.firstName LIKE '%test%'
OR t.firstName LIKE '%tested%'
OR t.secondName LIKE '%test%'
OR t.secondName LIKE '%tested%'
Это работает довольно хорошо для меня, но, возможно, что firstName
или secondName
столбцы таблицы будут содержать значения с кавычкой '
, такие как O'Hara
. Тогда это не сработает.
/api/library/authors/search?query=Tes O'Ha
Итак, я попытался заменить '
на двойные кавычки "
в запросе на что-то вроде этого:
SELECT t FROM Author t WHERE t.fullName LIKE "%Tes O'Ha%"
OR t.firstName LIKE "%Tes%"
OR t.firstName LIKE "%O'Ha%"
OR t.secondName LIKE "%Tes%"
OR t.secondName LIKE "%O'Ha%"
, и я получилисключение:
org.hibernate.QueryException: unexpected char: '"'
Я также пытался заменить '
на \'
и "
на \"
. Все это не работает и выдает мне исключение ...
Я выполняю этот запрос с помощью EntityManager:
@Repository
public class SearchFor {
@PersistenceContext
private EntityManager entityManager;
public List execute(String query) {
return entityManager.createQuery(query).getResultList();
}
}
Как мне найти значение, содержащее одинарную кавычку '
?