我有一个带有一些值的原生查询,我希望使用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());与命名参数相同的错误。
发布于 2019-11-04 10:34:09
在本机查询中,JPA不支持命名参数,只支持JPQL。您必须使用位置参数。尝试查询Q=em.createNativeQuery(“从员工处选择计数(*)”;q.setParameter(1,"test");
发布于 2019-11-05 06:48:46
我重新编写了我的查询,最后我可以使用.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());https://stackoverflow.com/questions/58690662
复制相似问题