带有集合约束的 HQL 失败

HQL with in set constraint fails

我想在列表中查找 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();

失败并出现以下错误:

信息:无法将值“[18992199174]”绑定到参数:1;

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

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

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

hibernate API docs for more info.