我们在其中一个项目中使用Hibernate,并在那里使用本机查询。
在其中一个本机查询中,sql看起来像:
AND LNG_ISO = :searchLang
。
然后我设置参数如:
query.setParameter("searchLang", "deu");
但结果显示,此参数未被考虑在内。
查询是正确的,因为替换
AND LNG_ISO = :searchLang
AND LNG_ISO = 'deu'
会返回预期结果。
我的字符串参数有什么问题? 也许我必须将值包装在单引号中,但我找不到如何操作的方法。
答案 0 :(得分:0)
通常不建议使用通用的vanilla query.setParameter
,因为它比它的专用等价物慢得多且容易出错。尝试其中之一:
query.setString("searchLang", "deu");
query.setParameter("searchLang", "deu", StringType.INSTANCE);
如果您使用的是Hibernate 5.2或更高版本,则只允许使用后面的选项。