我正在使用Spring在Hibernate中工作,并使用Spring Hibernate template
(getHibernateTemplate().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。所以我想知道,
先谢谢。
答案 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方法,你必须在调用数据库之前使用这个方法。