在hibernate中将字符串参数设置为本机查询时出错

时间:2017-12-08 08:53:11

标签: hibernate jpa orm

我们在其中一个项目中使用Hibernate,并在那里使用本机查询。 在其中一个本机查询中,sql看起来像: AND LNG_ISO = :searchLang。 然后我设置参数如:

query.setParameter("searchLang", "deu");

但结果显示,此参数未被考虑在内。 查询是正确的,因为替换 AND LNG_ISO = :searchLang AND LNG_ISO = 'deu'会返回预期结果。

我的字符串参数有什么问题? 也许我必须将值包装在单引号中,但我找不到如何操作的方法。

1 个答案:

答案 0 :(得分:0)

通常不建议使用通用的vanilla query.setParameter,因为它比它的专用等价物慢得多且容易出错。尝试其中之一:

query.setString("searchLang", "deu");
query.setParameter("searchLang", "deu", StringType.INSTANCE);

如果您使用的是Hibernate 5.2或更高版本,则只允许使用后面的选项。