java - hibernate 标准限制 :- how to fetch current and last month data

标签 java mysql hibernate criteria restrictions

这是我从创建日期获取特定月份和年份数据的方法。

    @Override
    public List getMonthlyOrdersSummary(LabOrderConditions labOrderConditions) {
        Criteria criteria = getCurrentSession().createCriteria(LabOrder.class);

        criteria.add(Restrictions.gt("orderNo", 0));
        if (StringUtils.isNotBlank(labOrderConditions.getClientCode()))
            criteria.add(Restrictions.eq("clientCode", labOrderConditions.getClientCode()));

        if (labOrderConditions.getAccountCodesList() != null) {
            criteria.add(Restrictions.in("practice.code", labOrderConditions.getAccountCodesList()));
        }


        if (StringUtils.isNotBlank(labOrderConditions.getClientsCodes())) {
            if (labOrderConditions.getCallingPlace().equalsIgnoreCase("allClients")) {
                List<String> items = Arrays.asList(labOrderConditions.getClientsCodes().split("\\s*,\\s*"));
                criteria.add(Restrictions.in("clientCode", items));
            }
        }

        criteria.add(Restrictions.sqlRestriction("YEAR(createdDate)=" + labOrderConditions.getYear()));
        ProjectionList projectionList = Projections.projectionList();

        if (labOrderConditions.getCallingPlace().equalsIgnoreCase("allClients")) {
            projectionList.add(Projections.groupProperty("clientCode"), "clientCode");
        }

        projectionList.add(Projections.sqlGroupProjection("MONTHNAME(createdDate) as orderMonthName", "MONTHNAME(createdDate)",
                new String[] { "orderMonthName" }, new Type[] { StandardBasicTypes.STRING }));
        projectionList.add(Projections.sqlGroupProjection("Month(createdDate) as orderMonthNo", "Month(createdDate)", new String[] { "orderMonthNo" },
                new Type[] { StandardBasicTypes.INTEGER }));

        projectionList.add(Projections.rowCount());
        criteria.setProjection(projectionList);
        criteria.addOrder(org.hibernate.criterion.Order.asc("createdDate"));
        return criteria.list();
    }

那么如何编写当前和上个月的限制。

我只想要类似的东西 criteria.add(Restrictions.in("MONTHNAME(createdDate)", labOrderConditions.getCompareMonthList()));

如果有人有任何建议,请与我分享。

谢谢 西坦苏

最佳答案

从 labOrderConditions.getCompareMonthList() 中,用 Java 创建相应的开始日期和结束日期对象,然后:

criteria.add(Restrictions.between("createdDate", startDate, endDate));

如果您有多个间隔,您还可以添加“或”限制。

这会解决您的问题吗?还是您期待其他结果?

关于java - hibernate 标准限制 :- how to fetch current and last month data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36327236/

相关文章:

java - DAO 和服务层的设计模式

java - 如何编写一个接受多个客户端Socket的ServerSocket?

重新分配 Java session 对象

java - 如何识别您的屏幕设备是投影仪还是显示器

php - 我如何重组此代码以使其仅显示一列的结果?

mysql - mysql 表列中的数字未按正确顺序插入

hibernate - Websphere 找不到我的 Hibernate 管理的 EntityManager

php - Laravel - 使用 OR 运算符连接 2 个表

java - 如何找出用于 hibernate 中特定查询的事务隔离级别?

java - hibernate : Resultset mapping in to Map<EntityTypeId, 列表 <EntitiyIds>>