【问题标题】:getHibernateTemplate().find(String query,Object values) equivalent in Hibernate在 Hibernate 中等效的 getHibernateTemplate().find(String query,Object values)
【发布时间】:2013-06-24 11:55:55
【问题描述】:

我正在使用 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。所以我想知道,

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

提前致谢。

【问题讨论】:

    标签: spring hibernate


    【解决方案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方法,调用数据库之前必须使用这个方法。

    【讨论】:

    • 您好 Manoj,感谢您的回复。我知道上面的解决方案。我们正在遍历参数值(使用 for 循环)并在查询中绑定参数和输入。但我正在寻找避免设置参数绑定的方法(无 for 循环)。如果你找到任何东西,请告诉我。谢谢。
    猜你喜欢
    • 2020-10-31
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 2020-09-15
    • 1970-01-01
    • 2012-03-06
    • 2020-01-01
    相关资源
    最近更新 更多