2017-10-09 98 views
-1

我正在使用JPA查询获取值并将结果放入列表中,但在服务类中,当我尝试将实体转换为DTO ..我得到错误“Ljava.lang.Object;无法投射到entityClass“ ...我试过forloop,forEach循环和迭代器出错。当我尝试获取第一个元素并将其放入entityclass对象时,我得到这个错误。[Ljava.lang.Object;不能转换为entityClass

List<Dashboard> dashboard = (List<Dashboard>)dashboardRepository.findAll(); 

    System.out.println("AllSolCount Length :------------------------------- "+dashboard.size()); 
    List<DashboardDto> result = new ArrayList<DashboardDto>(); 
    System.out.println("List Elements :----------------------------------- "+dashboard); 
    /*for(int i=0;i<dashboard.size();i++) { 
     **Dashboard obj = (Dashboard)dashboard.get(i); //error in this line I get** 
     DashboardDto dashboardDto = mapToDto(obj, DashboardDto.class, false); 

     result.add((DashboardDto) dashboardDto);  
    } 

    for (Dashboard obj : dashboard){ 
     **DashboardDto dashboardDto = mapToDto(obj, DashboardDto.class, false);// error in this line I get** 
     result.add((DashboardDto) dashboardDto); 
    }*/ 

    Iterator itr = dashboard.iterator(); 
    while(itr.hasNext()){ 
     **Dashboard obj = (Dashboard) itr.next(); // error here itself** 

    } 

    return result; 

线双*在哪里误差每个循环弹出的那些。请大家给点建议

Image contains the resultset which is a list of entity class object but i am not able to type cast to enitity Class itself

在检索从DB我正在返回实体类的列表数据,但而不是实体类的列表我得到的Java对象列表..所以我想可能是一些配置或缺少某些东西。

对我来说它的自定义查询 @Query(value =“SELECT sol.offering,sol.state,COUNT(sol.id)FROM Solution sol GROUP BY sol.offering,sol.state“) public List findAll();

+0

上有如此众多的非常类似的问题,都指向同一个原因(如https://stackoverflow.com/questions/27280818/java-lang-classcastexception-ljava-lang-object-cannot-be -cast-to-entity-usere)你看过那些吗? – fvu

+3

[java.lang.ClassCastException:\ [Ljava.lang.Object;不能转换为entity.UserEntity](https://stackoverflow.com/questions/27280818/java-lang-classcastexception-ljava-lang-object-cannot-be-cast-to-entity-usere) – araknoid

+0

答案在于你的截图。 您的存储库不会返回'List '。它返回一个'List '。 在您的调试器中,您可以部署'elementData [0]'来检查每个Object []中的内容。因此,以前的评论是正确的,你现在应该理解链接问题的答案。 – Genu

回答

1

list()方法返回List,你不能像你所做的那样直接施放它们。

List<Dashboard> dashboard = (List<Dashboard>)dashboardRepository.findAll(); 

你有List<Object[]>存储和通过一个迭代List<Object[]>之一,然后转换成List<Dashboard>

List<Object[]> list= (List<Object[]>)dashboardRepository.findAll(); 
List<Dashboard> mylist=new ArrayList<>(); 

      if(list!=null){ 
      for(Object [] ob:list){ 
       member1=ob[0]; 
       member2=ob[1]; 
       ....... 
       Dashboard db=new Dashboard(menber1,member2...);//or you use setter method for class member initialize. 
       mylist.add(db); 
      } 
     } 
+0

谢谢,但这不是工作类型转换错误。 – user2376404

+0

错误在哪一行..? –

+0

第一行本身..它说不能typcast仪表板到对象列表 – user2376404

相关问题