我有一个带有某些值的本机查询,我想使用setParameter获取这些值,但是如果尝试执行时遇到错误,则无法提取结果集。这是我的代码:
query1 =
entityManager.createNativeQuery("
SELECT id
FROM user
WHERE to_tsvector('simple',cast(name AS text)) @@ :value ");
query1.setParameter("value", "'"+parts[i + 1].toLowerCase()+"'" );
[我也尝试过(但仍然出现错误:无法找到命名参数[value],期望[]之一):
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());
与命名参数相同的错误。
[JPA在本机查询中不支持命名参数,仅对于JPQL。您必须使用位置参数。尝试类似查询q = em.createNativeQuery(“ SELECT count(*)FROM employee where employeename =?1”);q.setParameter(1,“ test”);
我重新整理了查询,最后可以使用.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());