I'm trying to build a request using Criteria with 2 sum but having this error:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to Stats
Stats class:
@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;
}
Looks like:
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
I want to sum NB_STATS_CONFIRMED and NB_STATS_DELETED between 2 dates (DATE_STAT).
Criteria request:
@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();
}
And then I call the method:
List<Stats> listStats = dao.listStats(start, end);
I tried [Ljava.lang.Object; cannot be cast to & Sum projection and results constraint
What am I doing wrong ?