Я использую Spring JPA для выполнения всех операций с базой данных. Однако я не знаю, как выбрать конкретные столбцы из таблицы в Spring JPA?
Например:
SELECT projectId, projectName FROM projects
java
jpa
spring-data-jpa
user1817436
источник
источник
Ответы:
Вы можете установить
nativeQuery = true
в@Query
аннотации изRepository
класса, как это:Обратите внимание, что вам придется делать сопоставление самостоятельно, хотя. Вероятно, проще использовать обычный сопоставленный поиск таким образом, если только вам действительно не нужны эти два значения:
Вероятно, стоит посмотреть и документацию Spring .
источник
FIND_PROJECTS
) сvalue
именем атрибута (следовательно, если бы это был мой код, я должен был бы написать его как@Query(value = FIND_PROJECTS, nativeQuery = true)
и т. Д.Вы можете использовать прогнозы из Spring Data JPA (doc) . В вашем случае создайте интерфейс:
и добавьте следующий метод в ваш репозиторий
источник
Мне не очень нравится синтаксис (он выглядит немного хакерским ...), но это самое элегантное решение, которое мне удалось найти (оно использует собственный запрос JPQL в классе репозитория JPA):
Тогда, конечно, вам просто нужно предоставить конструктор,
Document
который принимаетdocId
&filename
как аргументы конструктора.источник
В моей ситуации мне нужен только результат json, и это работает для меня:
в контроллере:
источник
Object
пользовательским интерфейсом, как описано в mpr. работает безупречноВ моем случае я создал отдельный класс сущностей без полей, которые не являются обязательными (только с полями, которые являются обязательными).
Сопоставьте сущность с той же таблицей. Теперь, когда требуются все столбцы, я использую старую сущность, когда требуются только некоторые столбцы, я использую облегченную сущность.
например
Вы можете создать что-то вроде:
Это работает, когда вы знаете столбцы для извлечения (и это не изменится).
не будет работать, если вам нужно динамически выбирать столбцы.
источник
Я предполагаю, что самый простой способ - использовать QueryDSL , который поставляется с Spring-Data.
Используя на ваш вопрос ответ может быть
Менеджер сущностей может быть Autowired, и вы всегда будете работать с объектом и предложениями без использования языка * QL.
Как видно из ссылки, последний вариант кажется мне более элегантным, то есть с помощью DTO для сохранения результата. Примените к вашему примеру, который будет:
Определение ProjectDTO как:
источник
С более новыми версиями Spring можно сделать следующее:
Если не использовать собственный запрос, это можно сделать, как показано ниже:
Используя собственный запрос, можно сделать то же самое, как показано ниже:
Для получения подробной информации проверьте документы
источник
На мой взгляд, это отличное решение:
и используя это так
источник
Используя Spring Data JPA, существует возможность выбора определенных столбцов из базы данных.
---- в DAOImpl ----
---- в репо ----
Это сработало на 100% в моем случае. Спасибо.
источник
Вы можете использовать JPQL:
или вы можете использовать собственный SQL-запрос.
источник
Можно указать
null
как значение поля в нативном sql.источник
Вы можете применить приведенный ниже код в своем классе интерфейса репозитория.
источник
Использование собственного запроса:
источник
Вы можете использовать ответ, предложенный @jombie, и:
findAll()
метод для этой цели, но используйте имя по вашему выбору;List
параметризованный с вашим новым интерфейсом (напримерList<SmallProject>
).источник