【问题标题】:Criteria 2 sum Ljava.lang.Object; cannot be cast标准 2 和 Ljava.lang.Object;不能施放
【发布时间】:2018-07-15 02:45:31
【问题描述】:

我正在尝试使用 2 sum 的 Criteria 构建请求,但出现此错误:

java.lang.ClassCastException: [Ljava.lang.Object;不能转换为 统计数据

统计类:

@Entity
@Table(name = "STATS")
@Getter
public class Stats{

    @Id
    @Column(name = "STAT_ID")
    private int statId;

    @Column(name = "NB_STATS_CONFIRMED")
    private long nbStatsConfirmed;

    @Column(name = "NB_STATS_DELETED")
    private long nbStatsDeleted;

    @Column(name = "DATE_STAT")
    private Date dateStat;

}

看起来像:

STAT_ID     NB_STATS_CONFIRMED     NB_STATS_DELETED     DATE_STAT
  1                5                     2            2018-01-23
  2                2                     1            2018-01-22
  3                8                     0            2018-01-20

我想在 2 个日期 (DATE_STAT) 之间对 NB_STATS_CONFIRMED 和 NB_STATS_DELETED 求和。

标准要求:

   @SuppressWarnings("unchecked")
    @Override
    public List<Stats> listStats(final Date start, final Date end) {
        Criteria cr = createRequest(); // method creating a criteria

        if (start != null) {
            cr.add(Restrictions.ge("dateStat", start));
        }
        if (fin != null) {
            cr.add(Restrictions.le("dateStat", end));
        }
        cr.setProjection(Projections.projectionList()
                .add(Projections.sum("nbStatsConfirmed"), "nbStatsConfirmed")
                .add(Projections.sum("nbStatsCanceled"), "nbStatsCanceled"));

        return cr.list();
    }

然后我调用方法:

List<Stats> listStats = dao.listStats(start, end);

我试过[Ljava.lang.Object; cannot be cast to & Sum projection and results constraint

我做错了什么?

【问题讨论】:

    标签: java sql hibernate sum criteria


    【解决方案1】:

    如果有人感兴趣但必须做 2 个请求,我找到了解决方案:

    long nbStatsConfirmed = (long) AJobUtil.valeurDefaut((cr.setProjection(
            Projections.sum("nbStatsConfirmed"))
            .uniqueResult()), (long) 0);
    
    long nbStatsCanceled = (long) AJobUtil.valeurDefaut((cr.setProjection(
            Projections.sum("nbStatsCanceled"))
            .uniqueResult()), (long) 0);
    
    long[] stats = { nbStatsConfirmed, nbStatsCanceled };
    
    return stats;
    

    如果您有不同的解决方案(有 1 个请求),仍然开放!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-21
      • 2013-12-27
      • 2019-04-26
      • 2012-05-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多