Параметр в подобном разделе JPQL
Я пытаюсь написать JPQL-запрос с похожим предложением:
LIKE '%:code%'
Я хотел бы иметь код = 4 и найти
455 554 646 ...
Я не могу пройти :code = '%value%'
- mysql как повышение производительности
- Элемент или class LIKE для jQuery?
- Поиск строки в текстовом столбце в MySQL
- Изменения производительности запросов PostgreSQL LIKE
- Невозможно использовать запрос LIKE в JDBC PreparedStatement?
namedQuery.setParameter("%" + this.value + "%");
потому что в другом месте мне нужно :value
не обернуто символами %
. Любая помощь?
- Как ускорить выбор SELECT .. LIKE запросов в MySQL на нескольких столбцах?
- Как сделать SQL как% в Linq?
- Оператор LIKE в LINQ
- MySQL - Как найти точное совпадение слов, используя LIKE?
- Microsoft Office Access `LIKE` VS` RegEx`
- MySQL SELECT LIKE или REGEXP для сопоставления нескольких слов в одной записи
- Фильтрация строки, содержащей определенную строку с использованием dplyr
- Является ли LIKE-оператор чувствительным к регистру с сервером MSSQL?
Если вы это сделаете
LIKE :code
и затем
namedQuery.setParameter("code", "%" + this.value + "%");
Тогда значение остается свободным от знака «%». Если вам нужно использовать его где-то еще в одном запросе, просто используйте другое имя параметра, кроме «code».
Я не использую именованные параметры для всех запросов. Например, необычно использовать именованные параметры в JpaRepository .
К обходу я использую функцию JPQL CONCAT (этот код эмулирует начало с ):
@Repository public interface BranchRepository extends JpaRepository { private static final String QUERY = "select b from Branch b" + " left join b.filial f" + " where f.id = ?1 and b.id like CONCAT(?2, '%')"; @Query(QUERY) List findByFilialAndBranchLike(String filialId, String branchCode); }
Я нашел эту технику в отличных документах: http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_query.html
Вы можете использовать функцию JPA LOCATE .
LOCATE (searchString, кандидатString [, startIndex]) : возвращает первый индекс searchString в кандидатеString. Позиции основаны на 1. Если строка не найдена, возвращает 0.
FYI: Документация на мой верхний хит Google изменила параметры.
SELECT e FROM entity e WHERE (0 < LOCATE(:searchStr, e.property))
Просто оставьте ”
LIKE %:code%
Я не знаю, опаздываю ли я или нет, но, на мой взгляд, я мог бы сделать это так:
String orgName = "anyParamValue"; Query q = em.createQuery("Select O from Organization O where O.orgName LIKE '%:orgName%'"); q.setParameter("orgName", orgName);
В API JPA критериев есть хороший метод like (). Попытайтесь использовать это, надеюсь, что это поможет.
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery criteriaQuery = cb.createQuery(Employees.class); Root rootOfQuery = criteriaQuery.from(Employees.class); criteriaQuery.select(rootOfQuery).where(cb.like(rootOfQuery.get("firstName"), "H%"));