Java 总计数未添加到现有列表中

Java 总计数未添加到现有列表中,java,mysql,spring-boot,spring-data-jpa,Java,Mysql,Spring Boot,Spring Data Jpa,我在java中使用SpringBoot和RESTAPI。我试图得到startDate和endDate之间的所有事件列表,并按startDate排序,但从每个日期仅得到6条记录,不能得到更多。如果每个记录日期>6,那么我想将计数添加到该特定记录日期中 假设在这个月里,有n个事件。但我只希望每个日期有六条记录,不需要更多的记录。如果有更多的记录可用,那么我希望添加记录日期的总计数。在这个eventsListTwoDates对象中,我得到了所有事件的列表 我从eventsListTwoDates列表中

我在java中使用SpringBoot和RESTAPI。我试图得到startDate和endDate之间的所有事件列表,并按startDate排序,但从每个日期仅得到6条记录,不能得到更多。如果每个记录日期>6,那么我想将计数添加到该特定记录日期中

假设在这个月里,有n个事件。但我只希望每个日期有六条记录,不需要更多的记录。如果有更多的记录可用,那么我希望添加记录日期的总计数。在这个eventsListTwoDates对象中,我得到了所有事件的列表

我从eventsListTwoDates列表中获得了每个记录的6个日期,但如果每个记录的日期大于6,则不会添加计数

1.JPA自定义查询

  @Query("SELECT new com.techavidus.networkingPhoniex.model.Events(e.id, e.eventImg , e.multipleDays , e.startDate, e.endDate, e.startTime, e.endTime, e.eventStatus, e.paid, e.fee, e.passportTickets, e.location, e.city, e.myFavourite, e.remainingTickets, e.eventName, e.passport, e.typesOfEvents, e.eventPassportOptions, e.promoCode, e.subTitle, e.expectedAttendance)" +
            " from Events e WHERE e.startDate BETWEEN :startDate AND :endDate AND e.endDate BETWEEN :startDate AND :endDate ORDER BY e.startDate")
    List<Events> findAllListOfEventsWithoutEventTypeIdWithOnlyTwoDateTest(String startDate, String endDate);

@Query(“选择新建com.techavidus.networkingPhoniex.model.Events(e.id,e.eventImg,e.multipleDays,e.startDate,e.endDate,e.startTime,e.endTime,e.eventStatus,e.paid,e.fee,e.passportTickets,e.location,e.city,e.myfavorite,e.remainingTickets,e.eventName,e.passport,e.typesofants,e.eventPassportOptions选项,e.promotcode,e.subTitle,e.expectedattendence)+
“来自事件e,其中e.startDate介于:startDate和:endDate之间,e.endDate介于:startDate和:endDate之间,按e.startDate排序”)
列出FindAllistofEventswithoutEventTypeId和onlytwodetest(字符串startDate、字符串endDate);
  • 代码
  • publicGenericResponse getListEvent()
    {
    列出eventsListTwoDates=eventsDao.FindAllistoEventsWithOutEventTypeId,仅包含yTwoDateTest(firstMondayCurrentMonth,lastDateCurrentMonth);
    事件=新事件();
    List eventsList=new ArrayList();
    
    对于(int i=0;i来说,似乎您根本就没有实际返回
    count
    ,因此这可能就是您没有可用的原因。此外,对于日期评估,我通常会忘记考虑时间部分,因此一些日期函数没有正确评估,我们会遇到类似这样的错误


    我会慢慢地调试你的代码,只是为了确定你的函数的功能。另外,你不想在每个日期范围内循环,而不是在整个列表中循环两次吗?你可以使用
    日历
    /
    本地日期时间
    类很容易地获得计数。

    看起来你根本就没有返回
    计数这可能就是为什么你没有它的原因。另外,对于日期评估,我通常会忘记考虑时间部分,所以一些日期函数没有正确评估,我们会遇到像这样的错误


    我会慢慢调试你的代码,只是为了确定你的函数的功能。另外,你不想在每个日期范围内循环,而不是在整个列表中循环两次吗?你可以使用
    日历
    /
    LocalDateTime
    类来很容易地获得计数。

    这里我有一个使用日期而不使用时间的选项,你循环的原因是什么通过两次相同的事件列表?我仍然看不到要将
    count
    添加到结果中的位置。是否需要添加
    events.setCount(count)
    到列表中,如果它大于6?是的,因为我将该列表与相同的startDate字段进行比较,该字段匹配,则tahat计数增加该日期如果它大于6,则我需要添加计数。进一步的API调用将被通知\n这里我有一个使用日期,但没有时间。是否有原因使同一事件列表循环两次?我是till看不到将
    count
    添加到结果中的位置。您不需要添加
    events.setCount(count)
    如果大于6,则添加到列表中?是的,因为我已将该列表与相同的startDate字段进行比较,该字段匹配,则该日期的tahat计数增加。如果大于6,则我需要添加计数。将通知进一步的API调用\
    public GenericResponse getListEvent()
    {
       List<Events> eventsListTwoDates = eventsDao.findAllListOfEventsWithoutEventTypeIdWithOnlyTwoDateTest(firstMondayCurrentMonth, lastDateCurrentMonth);
       Events events = new Events();
       List<Events> eventsList = new ArrayList<>();
       for (int i=0; i<eventsListTwoDates.size(); i++){
           int count = 1;
           for (int j=i+1; j<eventsListTwoDates.size(); j++) {
              if (eventsListTwoDates.get(i).getStartDate().equals(eventsListTwoDates.get(j).getStartDate())){
                  count++;
              }
           }
           if (count<=6) {
              events.setCount(count);
              eventsList.add(i,events);
              eventsList.add(eventsListTwoDates.get(i));
              System.out.println(count + " : " +eventsListTwoDates.get(i).getStartDate());
           }
       }
         return APIResponseBuilder.build(true, eventsList, commonMessages.findAllTrue);
    }