illegalargumentexception w/通过查询访问mysql数据库

dl5txlt9  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(277)

我试图返回查询结果,但出现以下错误:
java.lang.illegalargumentexception:无法使用请求的结果类型[java.sql.resultset]为具有多个返回的查询创建typedquery
以下是我的请求Map:

@RequestMapping(path="getAVGYTDStats.do", method = 
    RequestMethod.GET)
    public ModelAndView getAvgYTDStats() throws SQLException {
    ModelAndView mv = new ModelAndView();
    List<Double> stats; 
    stats = housedao.getAvgPriceYTDStats();
    System.out.println("stat after retrieval: " + "\n" + stats);
    mv.addObject("stats", stats);
    mv.setViewName("WEB-INF/views/stats.jsp");

    return mv;

这是我的dao访问器:

public List<Double> getAvgPriceYTDStats() throws SQLException {

    String sql = "select avg(h.closedPrice), avg(h.soldConcessions)                         
    from House h where h.closedDate>=\'2018-01-01\'";

    ResultSet avgSalesYTD = em.createQuery(sql,                 
    ResultSet.class).getSingleResult();

    if (avgSalesYTD.next()) {
    System.out.println(avgSalesYTD.getFloat(1));
    System.out.println(avgSalesYTD.getFloat(2));
    }

    List<Double> stats = new ArrayList<Double>(); 
    stats.add(avgSalesYTD.getDouble(1));
    stats.add(avgSalesYTD.getDouble(2));

    avgSalesYTD.close();

    return stats;
    }

我在兜圈子,想让它发挥作用。它编译但执行时出现上述异常。
有什么建议吗?谢谢您!
编辑:好的,我已经看过回复了(谢谢!)“想想”我走上了更好的轨道。以下是我现在所做的:

public List<Double> getAvgPriceYTDStats() throws SQLException {

    List<Double>stats  = 
            em.createQuery(
            "select avg(h.closedPrice), avg(h.soldConcessions) from                 
     House h where h.closedDate>=\'2018-01-01\'")
            .getResultList();

    return stats;
    }

我想我在这里要做的是从我的requestmapper调用方法/查询,请求一个double列表,然后将该列表返回给控制器和requestmapper。
然后我将该对象添加到我的模型中,并在jsp上打印出来。
问题是没有字符串,但我不知道如何转换它的方式显示。

tgabmvqs

tgabmvqs1#

那个 ResultSet.class 你的表情 createQuery 调用不是你如何使用这个api的。你把期望的类型放进去,然后 getSingleResult 方法负责将得到的1行折叠回对象中。
但在这段代码中,您是在努力读取数据的人。所以,不要使用 getSingleResult ,只需正常获取结果集。我不认识您在这里使用的db api(例如,不清楚'em'变量的类型),因此您必须查看文档以了解如何执行此操作。应该很简单。

相关问题