尝试迭代集合时,无法将HashMap转换为模型

时间:2018-11-06 15:22:27

标签: java iterator spring-data-jpa

我正在使用spring data jpa创建微服务。在存储库中,我正在使用JPQL查询。使用以下代码,我可以获得数据集。但是我想对数据集进行迭代以获取进一步的逻辑。

对于迭代,我使用了for each,但是当我为每个循环使用时,却遇到了错误"java.util.HashMap cannot be cast to com.spacestudy.model.RoomDepartmentMapping",

public Set<RoomDepartmentMapping> loadStatusOfRooms() {

        Set<RoomDepartmentMapping> roomDeptMapping = roomDeptMappingRepo.findStaus();           

        return roomDeptMapping;     
    }
}

存储库

@Repository
public interface RoomDepartmentMappingRepository extends JpaRepository<RoomDepartmentMapping, Integer> {

     @Query("select new map(roomDeptMap.sStatus as sStatus) from RoomDepartmentMapping as roomDeptMap")
        Set<RoomDepartmentMapping> findStaus();
}

结果

[
  {
    "sStatus": "A"
  },
  {
    "sStatus": "I"
  },
  {
    "sStatus": "R"
  }
]

预期结果

[
  {
    "sStatus": "Accepted"
  },
  {
    "sStatus": "In Progress"
  },
  {
    "sStatus": "Remaining"
  }
]

为了获得超出预期的结果,我尝试对Set和Set进行迭代使用的数据集。但是我无法使用以下循环进行迭代。

对于每个循环

for(RoomDepartmentMapping roomDeptMappingObj:roomDeptMapping) {

        System.out.println(roomDeptMappingObj);
    }

谁能告诉我为什么我不能为每个循环迭代set? 或请提出任何其他方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

基于方法的名称,我将假定您需要所有可用的状态值。 查询将是:

 @Query("select distinct rdm.sStatus from RoomDepartmentMapping rdm")
 Set<String> findStatus();
  • distinct =>您需要设置
  • Set => RoomDepartmentMapping sStatus是一个字符串