Java SQL查询Hibernate with子句where
这个查询在hibernate中应该是怎样的Java SQL查询Hibernate with子句where,java,hibernate,Java,Hibernate,这个查询在hibernate中应该是怎样的 public Double getValuPrice(int param1, int param2){ Query query = session.createQuery("FROM TableClass WHERE e.product= :param1 and e.type = :param2"); query.setParameter("param1 ",param1); query.setPara
public Double getValuPrice(int param1, int param2){
Query query = session.createQuery("FROM TableClass WHERE e.product= :param1 and e.type = :param2");
query.setParameter("param1 ",param1);
query.setParameter("param2",param2);
result = query.uniqueResult();
List lista = query.list();
return lista;
}
我想显示Servlet中返回的值
List list = classDao.getValuPrice(origem, destino);
out.println("<h1>" + list.eq(0) + "</h1>");
List List=classDao.getValuPrice(origem,destino);
out.println(“+list.eq(0)+”);
似乎缺少Select子句和表别名。
应该是
Query query = session.createQuery("Select * FROM TableClass e WHERE e.product= :param1 and e.type = :param2");
在查询中,您从TableClass执行
,然后执行,其中e.product=:param1
。我本以为这会给您一个错误,即无法解析路径[e.product],意外的令牌[e]
。另外,您的一个参数中有一个rogue空格,这将导致找不到命名参数[param1]
错误
但是,您不需要按照列宁的答案所建议的选择*
(请参阅)
因此,纠正这些问题:
删除“param1”
为result
指定类型(并执行强制转换)-除非result
是示例代码中未显示的字段
当然,在查询中删除属性前面的e.
(或者添加e
作为TableClass
的别名)
您正在返回一个列表
,但该方法指定了一个双精度
——我不确定您想在这里做什么,因此您需要自己解决这个问题
代码现在看起来像
public Double getValuPrice(int param1, int param2){
Query query = session.createQuery("FROM TableClass WHERE product= :param1 and type = :param2");
query.setParameter("param1",param1);
query.setParameter("param2",param2);
// assuming result is a field with type TableClass
result = (TableClass)query.uniqueResult();
List lista = query.list();
return lista; // <-- fix the return statement
}
酷,我用你的答案教新东西,我已经纠正了错误,现在正在工作,泰:)
Query q = session.createQuery("select price from TableClass WHERE product= :param1 and type = :param2"
...
Double result = ((Number) q.uniqueResult()).doubleValue();