首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetParameter中的NativeQuery与tsVector

SetParameter中的NativeQuery与tsVector
EN

Stack Overflow用户
提问于 2019-11-04 09:40:54
回答 2查看 264关注 0票数 0

我有一个带有一些值的原生查询,我希望使用setParameter获取这些值,但是如果我尝试,我得到一个错误,结果集无法提取。这里我的代码:

代码语言:javascript
复制
query1 = 
    entityManager.createNativeQuery("
    SELECT id 
    FROM user 
    WHERE to_tsvector('simple',cast(name AS text)) @@  :value ");

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

还尝试了(但仍然存在错误:无法找到命名的参数值,期待[]中的一个):

代码语言:javascript
复制
query1 = 
    entityManager.createNativeQuery("
    SELECT id 
    FROM user
    WHERE to_tsvector('simple',cast(name AS text)) @@ ' :value'");

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

此外,我尝试使用位置参数:

代码语言:javascript
复制
query1 = 
    entityManager.createNativeQuery("
    SELECT id 
    FROM user
    WHERE to_tsvector('simple',cast(name AS text)) @@ ' ?1'");

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

与命名参数相同的错误。

EN

回答 2

Stack Overflow用户

发布于 2019-11-04 10:34:09

在本机查询中,JPA不支持命名参数,只支持JPQL。您必须使用位置参数。尝试查询Q=em.createNativeQuery(“从员工处选择计数(*)”;q.setParameter(1,"test");

票数 0
EN

Stack Overflow用户

发布于 2019-11-05 06:48:46

我重新编写了我的查询,最后我可以使用.setParameter。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58690662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档