Java 强制转换无法从列表中运行<&燃气轮机;

Java 强制转换无法从列表中运行<&燃气轮机;,java,jpa,Java,Jpa,为什么这个演员会失败?因为结果对我来说是一张平均值的清单。但显然需要一些魔法,因为java认为它是一个对象 当进一步处理这个问题时,似乎q.getResultList()调用会给我一个对象的原始列表,这对我来说很奇怪,因为它是一个TypedQuery TypedQuery<Average> q = em.createQuery("select p.id, p.lastName, p.firstName, c.name, s.serieDate, st.serie_type, st.s

为什么这个演员会失败?因为结果对我来说是一张平均值的清单。但显然需要一些魔法,因为java认为它是一个对象

当进一步处理这个问题时,似乎q.getResultList()调用会给我一个对象的原始列表,这对我来说很奇怪,因为它是一个TypedQuery

TypedQuery<Average> q = em.createQuery("select p.id, p.lastName, p.firstName, c.name, s.serieDate, st.serie_type, st.serie_type_info, count(s.player.id), sum(s.result), avg(s.result) from Serie s, Player p, Club c, SerieType st " +
        " where p.id = s.player.id" +
        " and c.id = s.club.id " +
        " and st.id = s.serieType.id " +
        " and c.name like '%" + clubName + "%'" +
        " and st.serie_type like '%" + serieType.getSerie_type() + "%'" +
        " and st.serie_type_info like '%" + serieType.getSerie_type_info() + "%'" +
        " and s.serieDate > :startDate" +
        " and s.serieDate < :endDate" +
        " group by p.id, p.lastName, p.firstName, c.name, s.serieDate, st.serie_type, st.serie_type_info", Average.class);
        q.setParameter("startDate", calendarBean.getDate1());
        q.setParameter("endDate", calendarBean.getDate2());

对于您发布的代码和错误,该方法似乎希望出现一个
列表,该列表使用
String
类而不是
Average
再现问题

确保
列表中有
平均值
对象

由于
q.getResultList()
返回原始
列表
(没有泛型类型),因此在调用该方法的代码上未强制执行类型安全性


您可能会发现Hibernate参考非常有用。

再搜索一点,我就会发现


感谢Xavi将我引向正确的方向。

首先检查您在方法中作为参数放入的内容,最好发布更多代码。您从何处调用
CalculateArgaesClub
,该输入参数的类型是什么?该异常具体在何处引发?尝试设置断点并单步执行代码。在调用
CalculateAveragesClub
方法的位置添加代码快照!在问题中添加了更多信息。似乎是指jboss实体。这是一个Derby数据库,eclipselink用于JPA。@user2130951不熟悉
TypedQuery
,但JPA似乎不知道如何将所选属性的集合自动转换为
Average
实例。是否有使用这些字段的
平均值
构造函数?如果有,您可以尝试从…
@user2103951中选择新的平均值(p.id,…)
@user2103951,很高兴您已经解决了它。您是否介意发布并接受一个包含详细信息的答案,以便该问题的未来访问者能够找到一个合适的被接受的答案?记住,向上投票是有帮助的答案,接受最好的答案是为网站做出贡献和提高网站质量的一个好方法,同时回馈:-)我不确定这是不是可以发布的。对我来说,这个解决方案似乎真的是倒退了,而且根本不是我会推荐的东西,除非绝对没有其他方法可以做到这一点。因为我必须发送一个Object[]并在创建一个普通对象时强制转换所有内容。
List<Average> resultList = q.getResultList();
List<Average> withAverages = CalculateAveragesClub(resultList);

private List CalculateAveragesClub(List<Average> results)   {
        for (Average average : results) { //error in this cast
}
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/BowlingFacelets] threw exception [[Ljava.lang.Object; cannot be cast to com.jk.hcp.Average] with root cause
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.jk.hcp.Average
    at com.jk.hcp.ServiceSeries.CalculateAveragesClub(ServiceSeries.java:508)
List<Average> resultList = q.getResultList();
q.addEntity(Average.class);
List<Average> resultList = q.getResultList();