Hibernate HQL查询

时间:2013-01-08 17:39:52

标签: hibernate hql

我正在尝试使用多个像

这样的参数来创建HQL查询
result = sessionFactory.getCurrentSession().createQuery("from County where " + [0].property + "=?"+","+ c[1].property + "=?")

.setParameter(0,c [0] .value)
.setParameter(1,c [1] .value).list();

而不是这样做我试图创建一个可以处理任何数量的参数的查询,如

for(Params c:parms){`enter code here`
    queryString+= c.property +" = "+c.value+",";
    }
result = (State) sessionFactory.getCurrentSession()
                .createQuery("from County where " +queryString)
                .list().get(0);

查询看起来正确,但它说“无法执行查询”

1 个答案:

答案 0 :(得分:1)

a)你为什么放弃使用像你使用固定大小参数的准备好的声明?

b)为什么要将c.property +" = "+c.value+",";归结为“结果”而不是queryString?

c)逗号对所述归属的影响是什么?不应该是“和”或“或”吗?

重新评论您的答案

“a)使用多个pams而不是固定大小”

String whereClause = new String();
for (Params p : params) {
    if (whereClause.isEmpty())
        whereClause = " where ";
    else
        whereClause += " and ";
    whereClause += p.property + " = ? ";
}
Query query = sessionFactory.getCurrentSession().createQuery("from County " + whereClause);
for (int i = 0; i<params.size(); i++) {
    query.setParameter(i, params[i].value);
}
result = (State) query.list().get(0);

“c)即使我只有一个参数,因为使用上述代码失败了! - ”

是的,即使您有一个参数,您仍然在查询结尾处添加逗号。这不是有效的格式