1

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

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

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

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

  • 在休眠(会话或查询)类中是否有任何等效的方法可以提供与上述相同的功能,我将在其中传递 HQL 和值?

提前致谢。

4

1 回答 1

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 方法,您必须在调用数据库之前使用此方法。

于 2013-06-24T13:30:26.020 回答