getHibernateTemplate()。find(String query,Object values)等效于Hibernate

时间:2013-06-24 11:55:55

标签: spring hibernate

我正在使用Spring在Hibernate中工作,并使用Spring Hibernate templategetHibernateTemplate().find(String query,Object values))将值替换为定位参数。
我的疑问是:

from className classObject where classObject.variableOne = ? and classObject.variableTwo = ?  

我的参数是ArrayList<String>,有2个值。

getHibernateTemplate().find(String query,Object values)在where子句中自动分配ArrayList值(如您所见,我没有手动绑定参数)并返回结果。
现在,我从我的应用程序中删除了spring并仅使用了hibernate。所以我想知道,

  • hibernate中是否有可用的等效方法(Session或 查询)类提供与上面相同的功能,我将传递HQL和值?

先谢谢。

1 个答案:

答案 0 :(得分:1)

您必须使用以下内容

private void setParamValues(final String[] paramValues, SQLQuery query) {
        if (paramValues != null && paramValues.length > 0) {
            for (int liCnt = 0; liCnt < paramValues.length; liCnt++) {
                query.setString(liCnt, paramValues[liCnt]);
            }
        }
}

SQLQuery会取代?传递参数的值。请记住,paramValues数组中的序列应与查询中写入的序列相同。

以上一直在我的情况下工作,我相信这也适用于你的情况。

这不是Hibernate方法,你必须在调用数据库之前使用这个方法。