Próbuję uzyskać raport za pomocą kryteriów i ProjectionList i jestem całkiem nowy przy użyciu tego poprzez hibernację. Więc mam ten model:Grupa według miesięcy z kryteriami Hibernate
private Long _userId;
private Category _category;
private Long _companyId;
private Double _amount;
private Date _date;
I budowania kwerendy przy użyciu to:
public List sumPaymentsByUserCategoryPeriod(Category category, Long userId,Integer period){
GregorianCalendar from = new GregorianCalendar();
from.add(Calendar.MONTH, -period);
List<CategoryAmount> resultDTO= new ArrayList<CategoryAmount>();
Criteria criteria = getSession().createCriteria(Payment.class);
criteria.add(Restrictions.eq("_category", category));
criteria.add(Restrictions.eq("_userId",userId));
criteria.add(Restrictions.between("_date", from.getTime(), new Date()));
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.sum("_amount"));
projectionList.add(Projections.groupProperty("_date"));
criteria.setProjection(projectionList);
return criteria.list();
}
Zasadniczo metoda ta otrzyma kategorię i userid filtrowania płatności rekordy i okres, który wskaże ile miesięcy od teraz do końca chcę sumować. Jak mogę uzyskać sumę wyniku pogrupowaną według miesięcy?
Każda pomoc lub napiwek doceniam to!
Jak obsługiwać różne DB? takie jak MSSQL i Oracle? jako Oracle używać to_char i mssql używać weeknum ... – zolibra