2017-09-18 44 views
0

我被困在一个点,在那里我从域中获取列表并将其保存到另一个列表中。我如何通过参数去新创建的列表我如何在Grails中的列表中设置参数最大值和偏移量

的代码看起来如下喜欢:

params.max = Math.min(max ?: 10, 100) 
     params.offset = params.offset as Integer ?: 0 



     Calendar date = Calendar.getInstance(); 
     date.set(Calendar.DAY_OF_MONTH, 1); 
     Calendar date2 = Calendar.getInstance(); 
     date2.set(Calendar.DAY_OF_MONTH, date.getActualMaximum(Calendar.DAY_OF_MONTH)); 

     def MonthStartDate =date.getTime() 
     def MonthEndDate =date2.getTime() 
     int monthMaxDays = MonthEndDate - MonthStartDate + 1 


     Calendar cal0 = Calendar.getInstance(); 
     cal0.set(Calendar.DAY_OF_MONTH,1); 
     Calendar cal = Calendar.getInstance(); 
     cal.set(Calendar.DAY_OF_MONTH,1); 
    def myNewList = new ArrayList<DomainABCTYPE>() 
      def perDayDates = new ArrayList<Date>() 




      for(int i=0;i<monthMaxDays;i++) { 
       Date date1 = cal0.getTime(); 
       cal.add(Calendar.DATE, 1); 
       Date calDate = cal.getTime(); 


       def myListPerDay = DomainABCTYPE.findAllByStartDateLessThanAndEndDateGreaterThanEquals(calDate, date1, params) 



       int k=0 
       for(;k < myListPerDay .size(); k++){ 
        myNewList.add(myListPerDay .get(k)) 
        perDayDates.add(date1) 
        } 


       cal0.add(Calendar.DATE, 1) 


      } 


      render(view: "index", model:[ListInstance:myNewList ,ListCount:myNewList.size(), DatesList:perDayDates, MonthStartDate: MonthStartDate, MonthEndDate: MonthEndDate]) 

     } 

回答

0

Have a look here你如何可以直接传递分页PARAMS成GORM找到方法。

我简单地看了你的代码,所有的内容都看起来很疯狂,你正在计算日期差异,然后迭代日期差异来查找记录。

为什么不写一HQL query和使用between

where a.date BETWEEN :date1 AND :date2 

总之所有的可与1查找并应不需要嵌套迭代查询

+0

我需要检查数据的每一天就能做完一个月...如何编写gorm用于检查从1日到30日的日期范围,哪个日期位于两列的范围内startdate和enddate ..即我用于循环这里 – dhS

+0

都取决于你是什么每天收集,计数发生,在某一天的实际记录方式还有其他的事情可以这样做,这样可以减少上述数据库要求,可以通过一次完成自己的映射或者更清楚地思考正在实现的内容以及HQL查询甚至原始SQL在一个查询中是否足够 – Vahid

相关问题