我正在尝试使用Criteria和ProjectionList来获取报告,并且通过hibernate使用它还很新。所以我有这个模型:
private Long _userId;
private Category _category;
private Long _companyId;
private Double _amount;
private Date _date;
我使用以下命令构建查询:
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();
}
基本上,此方法会收到一个Category和一个userId来过滤付款记录和一个期间,这些人将指示从现在到现在我要累加多少个月。如何获得按月分组的总和结果?
任何帮助或提示,我将不胜感激!
我找到了答案,而且非常简单。我为此更改了ProjectionList标准中的“ groupProperty”:
projectionList.add(Projections.sqlGroupProjection(
"month({alias}.DATE) as month, year({alias}.DATE) as year",
"month({alias}.DATE), year({alias}.DATE)",
new String[]{"month","year"},
new Type[] {Hibernate.DOUBLE}));
好的。我将解释sqlGroupProjection。第一个参数是“选择”之后查询的一部分,例如:
Select [firstPartOfSqlGroupProjection] * boo;
“ {alias}”是hibernate状态在查询中用于引用表的别名。
sqlGroupProjection函数的第二个参数是按条件分组,第三个参数是从分组依据中获取的列名,最后是要使用的数据类型。
问题内容: 我已经使用以下代码实现了分页: 当我手动构建SQL查询并将其提交到数据库时,我得到8个结果。但是,当我尝试上述代码时,在将ResultTransformer设置为DISTINCT_ROOT_ENTITY之前,将获得8个结果(没有区别),而在设置之后,我将获得4个结果。但是我应该得到8个结果(使用DISTINCT),因为当我手动构建SQL时没有区别时,我得到11个结果,而当我使用DIST
问题内容: 如何将sql查询写入hibernate条件? 问题答案: 想我找到了答案。您必须使用Projection.sqlProjection()而不是Projections.sum()。例:
问题内容: 我有一个SQLite数据库,其中包含交易,每个交易都有一个 价格 和一个 transDate 。 我想检索按月分组的交易总和。检索到的记录应类似于以下内容: 问题答案: 当您按MONTH分组时总是很好,还应该检查YEAR 对于SQLITE
问题内容: 我有一个具有此架构的表 我正在尝试使查询工作显示每个月的总数。到目前为止,我已经尝试过DateDiff和嵌套选择,但都没有给我想要的东西。我认为这是最接近的: 但是当我应该获取值时,我只会得到空值。我想念什么吗? 问题答案: 您也可以尝试:
问题内容: 我有两个实体:和。我正在使用Hibernate 3.6。 如何使用休眠标准实现这一目标,最重要的是,我必须将其用于分页。 而“我的道”如下所示以显示jqgrid中的“问题”列表 公共列表showHelpDeskIssues(DetachedCriteria dc,int from,int size){ 对于简短的解释,请参考此问题,如何使用struts2-jqgrid插件在jqgrid
问题内容: 我想要 但是这个查询不能使用 如何使用SQLAlchemy做到这一点? 问题答案: 假设您的数据库引擎实际上支持诸如之类的功能,则可以尝试 否则你可以像