如何在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.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>");
答案 0 :(得分:0)
好像你缺少Select子句和表别名。 它应该像
Query query = session.createQuery("Select * FROM TableClass e WHERE e.product= :param1 and e.type = :param2");
答案 1 :(得分:0)
在您的查询中,您正在from TableClass
,然后WHERE e.product = :param1
。我原以为这会给你一个Unable to resolve path [e.product], unexpected token [e]
的错误。此外,您的某个参数中还有一个恶意空间,这会给您could not locate named parameter [param1 ]
错误。
但是,根据列宁的回答,您不需要select *
(请参阅Hibernate manual (v4.3 §11.4.1 "Executing Queries"))
纠正这些:
"param1 "
result
的类型(并进行投射) - 除非result
是您未在示例代码中显示的字段e.
(或将e
添加为TableClass
的别名)List
,但该方法指定了Double
- 我不确定您要在此处执行什么操作,因此您需要自己解决这个问题。代码现在看起来像
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
}
如果您想要返回TableClass
上的特定字段,即Double
(例如double price;
),请执行以下操作:
Query q = session.createQuery("select price from TableClass WHERE product= :param1 and type = :param2"
...
Double result = ((Number) q.uniqueResult()).doubleValue();