带有set约束的HQL失败

时间:2016-08-12 17:46:49

标签: hibernate hql

我想在列表中找到id的字段的聚合。你如何让这个工作:

    final String ihql = "SELECT sum(revenue) from LineItemR where variantID in (:vid) and dtime>:dt";
    List<Long> idList = new ArrayList<>(varIds);
    return (double) Hibernate.getSessionFactory().openSession()
            .createQuery(ihql)
            .setParameter("dt", dtime)
            .setParameter("vid", idList)
            .uniqueResult();

此失败,出现以下错误:

INFO:无法将值'[18992199174]'绑定到参数:1;

java.util.ArrayList无法强制转换为java.lang.Long

线程“main”中的异常java.lang.ClassCastException:java.util.ArrayList无法强制转换为java.lang.Long

1 个答案:

答案 0 :(得分:1)

如果您使用的是Hibernate而不是javax.persistence.Query,则可能需要使用setParameterList()方法而不是setParameter()

请参阅 hibernate API docs for more info