Java IllegalArgumentException-名为[name]的参数不存在
我对我的代码有以下查询:Java IllegalArgumentException-名为[name]的参数不存在,java,hibernate,jpa,wicket,Java,Hibernate,Jpa,Wicket,我对我的代码有以下查询: return Long.parseLong(getEntityManager().createQuery( "SELECT COUNT(a) FROM ApartmentExtraType a WHERE a.accommodation.id = :idacc AND (LOWER(a.name) LIKE :name)", Long.class) .setParameter("idacc", accommodation.getId()) .setParameter(
return Long.parseLong(getEntityManager().createQuery(
"SELECT COUNT(a) FROM ApartmentExtraType a WHERE a.accommodation.id = :idacc AND (LOWER(a.name) LIKE :name)",
Long.class)
.setParameter("idacc", accommodation.getId())
.setParameter("name", "%" + filterQuery.getFieldFilter("name").toString().toLowerCase() + "%")
getSingleResult().toString());
如果查询未找到任何元素,则我没有问题,但如果它至少找到一个元素,则我有以下错误:
Last cause: Parameter with that name [name] did not exist WicketMessage: Error attaching this container for rendering:
[WebMarkupContainer [Component id = tbody]]
相对列的名称是“name”,我敢肯定。其他查询似乎与此查询相同,并且工作正常。我不知道哪一个是问题看起来问题不在于列名,而在于您传入的名为“name”的参数。“idacc”一个看起来是正确抓取的 所以这部分不起作用
filterQuery.getFieldFilter(“名称”).toString().toLowerCase()
试着传入一个字符串,看看它是否像
.setParameter(“名称”、“示例名称”)代码>
如果运行正常,则说明我解决的getFieldFilter
函数有问题。问题在于,查询由不同的方法组成,因为它根据用户的输入而变化,并且在其中一种方法中,变量的实例化很糟糕。因此JVM没有找到带有[name]参数的查询部分 我控制了问题是否出在getFieldFilter上,但我不这么认为,因为syste.out打印的字符串是正确的。