Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL查询Hibernate with子句where_Java_Hibernate - Fatal编程技术网

Java SQL查询Hibernate with子句where

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

这个查询在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>");
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();