SetParameter в NativeQuery с помощью tsVector - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть собственный запрос с некоторыми значениями, и я хочу получить эти значения с помощью setParameter, но если я пытаюсь получить ошибку, мой набор результатов не может быть извлечен. Вот мой код:

query1 = 
    entityManager.createNativeQuery("
    SELECT id 
    FROM user 
    WHERE to_tsvector('simple',cast(name AS text)) @@  :value ");

query1.setParameter("value", "'"+parts[i + 1].toLowerCase()+"'" );

Также я попытался (но все еще с ошибкой: не удалось найти именованный параметр [значение], ожидая одно из []):

query1 = 
    entityManager.createNativeQuery("
    SELECT id 
    FROM user
    WHERE to_tsvector('simple',cast(name AS text)) @@ ' :value'");

    query1.setParameter("value", parts[i + 1].toLowerCase());

Также я пытался с позиционным параметром:

query1 = 
    entityManager.createNativeQuery("
    SELECT id 
    FROM user
    WHERE to_tsvector('simple',cast(name AS text)) @@ ' ?1'");

    query1.setParameter(1, parts[i + 1].toLowerCase());

Та же ошибка, что и у именованных параметров.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Я переработал свой запрос и наконец смог использовать .setParameter.

SELECT id
FROM user
WHERE to_tsvector('simple',cast(name AS text)) @@   
plainto_tsquery('simple',cast(:value AS text))"

query1.setParameter("value", parts[i + 1].toLowerCase());
0 голосов
/ 04 ноября 2019

Именованные параметры не поддерживаются JPA в собственных запросах, только для JPQL. Вы должны использовать позиционные параметры. Попробуйте что-то вроде Query q = em.createNativeQuery ("SELECT count (*) FROM employee, где employeeename =? 1");q.setParameter (1, "test");

...