2016-03-31 2 views
0

作成した日付から特定の月と年のデータを取得する方法です。Hibernateの基準制限事項: - 現在と先月のデータを取得する方法

@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から

おかげ Sitansu

答えて

1

()、そして、Javaでの対応開始と終了の日付オブジェクトを作成します。

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

を使用すると、複数の間隔を持っている場合、あなたはまた、 "追加することができますまたは「制限」を含む。

あなたの問題を解決するか、別の結果が期待できますか?

+0

ありがとうございます。今月(3月)と先月(2月)のようなデータが必要です。すべてのデータは月にベースを取得します – Sitansu

+0

データベースとは何ですか? 例えば、PostgreSQLでは "GROUP BY date_trunc( 'month'、createdDate)"を使うことができるので、Hibernateの答えはあなたのデータベースにも依存するかもしれません。 –

+0

私たちはMySQLデータベース – Sitansu

関連する問題