Я пытаюсь получить результаты выборки из базы данных, применяя запрос 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"}]
Путаница -
- Почему информация о столбце получается только после добавления функции map () в запрос?
- Для чего здесь используется функция map ()?
- Почему столбец не извлекается в первом результате?
Примечание -: Второй запросвыдача результата с колонкой только тогда, когда есть отображение / объединение в таблицах.В противном случае первого запроса достаточно для результата с информацией столбца.Я вынужден добавлять функцию карты только при наличии функции соединения.
Может кто-нибудь прояснить мои недоразумения, пожалуйста?