【发布时间】:2021-05-09 16:57:49
【问题描述】:
我有这些方法可以按给定日期从数据库中获取数据,
第一次查询
@Query(nativeQuery=true, value="SELECT COUNT(`user_id`) FROM `app_user` u LEFT JOIN `user_etablissement` ue on u.id=ue.user_id WHERE year(u.creatdate_time)= :date GROUP BY `etablissement_id`")
public List<BigInteger> findALLUserBenByyear(@Param("date") String date);
第二次查询
@Query(nativeQuery=true, value="SELECT * FROM `etablissement` WHERE YEAR(creatdate_time)= :date")
public List<Etablissement> findAllEtabname(@Param("date") String date);
控制器方法
@GetMapping(value="/etablissementAa/{annee}")
public EtablissementDto EtabDTOA(@PathVariable String annee)
{
EtablissementDto a = new EtablissementDto();
List<Etablissement> etabs = etablissementRepository.findAll() ;
List<String> myList = new ArrayList<>();
for (int i = 0; i < etabs.size(); i++) {
myList.add(etablissementRepository.findAllEtabname(annee).get(i).getEtabName()) ;
}
List<BigInteger> UsersNumb = userRepository.findALLUserBenByyear(annee) ;
List<BigInteger> myList1 = new ArrayList<>();
for (int j = 0; j <UsersNumb.size(); j++) {
myList1.add((BigInteger) userRepository.findALLUserBenByyear(annee).get(j)) ;
}
a.setEtabNamee(myList);
a.setUsersNumber(myList1);
return a;
}
当我从邮递员执行我的方法时,它显示了这个错误
"status": 500,
"error": "Internal Server Error",
"message": "Index: 4, Size: 4",
全栈跟踪
2021-05-09 17:55:29.913 INFO 16716 --- [nio-8020-exec-1] o.h.h.i.QueryTranslatorFactoryInitiator : HHH000397: Using ASTQueryTranslatorFactory
2021-05-09 17:55:29.962 ERROR 16716 --- [nio-8020-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IndexOutOfBoundsException: Index: 4, Size: 4] with root cause
java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
at java.util.ArrayList.rangeCheck(ArrayList.java:659) ~[na:1.8.0_281]
at java.util.ArrayList.get(ArrayList.java:435) ~[na:1.8.0_281]
at org.club.controller.EtablissementController.EtabDTOA(EtablissementController.java:143) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_281]
【问题讨论】:
-
请edit 发帖并添加完整的堆栈跟踪。
-
@Turing85 完成。
-
etabs是所有Etablissement的列表。它的大小用于第一个for循环的条件。在循环中,您将获得特定年份的所有Etablissements 的列表。这个列表很可能小于所有Etablissements 的列表,因此IndexOutOfBoundsException
标签: java mysql spring-boot