当前位置: 首页 > 知识库问答 >
问题:

JAVAlang.IllegalArgumentException:您试图使用查询字符串中不存在的字符串名称设置参数值

督飞鸣
2023-03-14

我有以下命名查询:

@NamedQuery(
    name = "Userdetails.findByUsername", 
    query = "SELECT u FROM Userdetails u WHERE u.username = :username"
)

当我尝试按如下方式执行时:

getEntityManager()
    .createNamedQuery("Userdetails.findByUsername")
    .setParameter("string", "%" + string + "%")
    .getResultList();

然后我得到以下例外:

JAVAlang.IllegalArgumentException:您试图使用查询字符串中不存在的字符串名称从Userdetails u中选择u,其中u.username=:username来设置参数值。

这是怎么造成的,我该如何解决?

共有1个答案

葛安和
2023-03-14

这里是你的Userdetails。findByUsername命名查询您有一个名为用户名的命名参数

SELECT u FROM Userdetails u WHERE u.username = :username

然后使用实体管理器调用它,但设置一个字符串参数:

getEntityManager()
    .createNamedQuery("Userdetails.findByUsername")
    .setParameter("string", "%" + string + "%") //<-- check here
    .getResultList();

将此字符串参数替换为username

getEntityManager()
    .createNamedQuery("Userdetails.findByUsername")
    .setParameter("username", "%" + string + "%") //<-- check here
    .getResultList();
 类似资料:
  • 我从客户端发送了以下查询字符串参数 在REST服务器中,我如何接收上述格式并正确分配给每个类别? 更新1 参数的值为 {_=[1437904506062],{“take”:75,“skip”:0,“page”:1,“pageSize”:75、“filter”:{“logic”:“and”,“filters”:〔{“field”:“prodCode”,“operator”:“eq”,“value”:

  • 问题内容: 我在C#中使用elasticsearch.net库,并尝试查询与指定过滤器匹配的对象。 我希望查询返回对象,其中对象的Names集合中至少存在来自过滤器的输入名称之一。 问题是此查询的结果总是使我命中0次,即使我确定数据库中确实存在与指定过滤器匹配的数据,我也想找出我的查询出了什么问题… 该模型: 过滤对象: 查询数据的方法: 我也尝试过以下查询,但都没有产生预期的结果: 适用于我的解

  • 我想从我的Android应用程序向Spring Boot发送post请求。我使用okhttp以JSON格式发送HTTP post请求。代码如下: 每次我使用Android请求发送post请求时,我都会收到400个错误的请求参数“name”不存在,“path”:“/newcustomer”。但当我使用postman时,它可以工作。

  • 问题内容: 我正在努力在路由中传递和读取多个查询字符串参数。 这是搜索页面: 这是JobOffersController: 读取$ routeParams根本不起作用。如果我将“ developer”作为关键字,将“ New York”作为位置,则$ routeParam对象如下所示: 有人可以告诉我我在做什么错吗?提前致谢。 PS这可能是由于错误配置的路由吗?当我通过该函数导航时,它会将URL编

  • 问题内容: 从格式如下的URL查询字符串中获取参数的“较少代码”方法是什么? www.mysite.com/category/subcategory?myqueryhash 输出应为: 我知道这种方法: 问题答案: 包含您要查找的数据。 文件资料 **php.net:$** _SERVER-手册