Применение новой функции map () в запросе JPQL для получения результата с подробностями столбца - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь получить результаты выборки из базы данных, применяя запрос JPQL в микросервисе с весенней загрузкой.Я использую JPQL-запрос для получения набора результатов по столбцам.Когда я добавляю обязательный столбец, результат содержит только значение.Нет информации о том, к какому столбцу он относится, так как я беру этот результат из приложения Angular 2.Поэтому мне нужен результат как пара ключ-значение.

После этого, когда я добавляю новую функцию map () с псевдонимами в запросе JPQL, он корректно извлекается со столбцами.

Мой первый код ,

@Query("select u.username, p.pname  from Users u join u.priviJoin p where u.username = :uname")
    List<Users> findByUsername(@Param("uname") String uname);

Результат - Не содержит информацию о столбце

[["jacob", "Admin"]]

После добавления функции карты код: ,

@Query("select  new Map(u.username as username , p.pname as pname) from Users u join u.priviJoin p where u.username = :uname")
    List<Users> findByUsername(@Param("uname") String uname);

Результат ,

[{"pname": "Admin", "username": "jacob"}]

Путаница -

  1. Почему информация о столбце получается только после добавления функции map () в запрос?
  2. Для чего здесь используется функция map ()?
  3. Почему столбец не извлекается в первом результате?

Примечание -: Второй запросвыдача результата с колонкой только тогда, когда есть отображение / объединение в таблицах.В противном случае первого запроса достаточно для результата с информацией столбца.Я вынужден добавлять функцию карты только при наличии функции соединения.

Может кто-нибудь прояснить мои недоразумения, пожалуйста?

1 Ответ

0 голосов
/ 04 июня 2018

Эти три вопроса одинаковы, ответ:

Это то, для чего предназначена функция Map.

Обычный запрос всегда возвращает только значениевыбран в виде List<Object[]>, и вы должны получить доступ к каждому столбцу по позиции.

С помощью функции карты вы получите List<Map<String, Object>>, к которому можно получить доступ по имени.

...