2016-03-31 3 views
0

Вот мой метод получения определенных данных месяца и года из созданной даты.Спящий критерий Ограничения: - как получить данные текущего и последнего месяца

@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()));

Пожалуйста, если кто-нибудь есть какая-либо доля рекомендации со мной.

Благодаря Sitansu

ответ

1

С вашего labOrderConditions.getCompareMonthList(), создать соответствующие начальные и конечные объекты Date в Java, а затем:

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

Если у вас есть несколько интервалов, вы можете также добавить " или "ограничения".

Будет ли это решить вашу проблему, или вы ожидаете другого результата?

+0

Спасибо, мне нужны данные, такие как текущий месяц (март) и в прошлом месяце (февраль) вся база данных данных в месяц – Sitansu

+0

Какова ваша база данных? Например, в PostgreSQL вы можете использовать «GROUP BY date_trunc (« month », createdDate)», поэтому ответ в Hibernate также может зависеть от вашей базы данных. –

+0

Мы используем базу данных Mysql – Sitansu

Смежные вопросы