HashMap не может быть приведен к модели при попытке перебора набора - PullRequest
0 голосов
/ 06 ноября 2018

Я использую 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"
  }
]

Для получения ожидаемого результата я пытаюсь выполнить итерацию набора данных для каждого и планирую использовать регистр переключения. Но я не могу повторить, используя следующий цикл.

Для каждой петли

for(RoomDepartmentMapping roomDeptMappingObj:roomDeptMapping) {

        System.out.println(roomDeptMappingObj);
    }

Может кто-нибудь сказать мне, почему я не могу перебирать наборы для каждого цикла? Или, пожалуйста, предложите любой другой способ сделать это.

1 Ответ

0 голосов
/ 08 ноября 2018

Исходя из названия вашего метода, я буду считать, что вам нужны все доступные значения состояния. Запрос будет:

 @Query("select distinct rdm.sStatus from RoomDepartmentMapping rdm")
 Set<String> findStatus();
  • отчетливо => вам нужно установить
  • Set => RoomDepartmentMapping sStatus является строкой
...