У меня есть проект, построенный на Spring MVC + JPA + Hibernate. Я использую диаграммы сущностей (JPA 2.1) для определения данных для извлечения из базы данных, как в примере ниже.
EntityGraph<Company> entityGraph = entityManager.createEntityGraph(Company.class);
entityGraph.addAttributeNodes("reviews");
Map<String, Object> hints = new HashMap<String, Object>();
hints.put("javax.persistence.loadgraph", entityGraph);
Company company = entityManager.find(Company.class, companyId, hints);
Мой объект Review
имеет связь с объектом Company
(ManyToOne
).
Здесь я просто извлекаю объект Company
с заполненной коллекцией reviews
. Это хорошо работает в сценариях, подобных описанным выше. Но что, если я хочу получить все или некоторые обзоры данной компании? То есть объекты Review
, которые связаны с компанией с данным идентификатором. Я хочу List<Review>
вместо объекта Company
с List<Review>
. Это всего лишь пример - в основном я ищу больше гибкости, чем просто поиск объекта на основе первичного ключа. Я могу сделать это с помощью HQL без проблем, но тогда мне придется писать несколько похожих запросов, в зависимости от того, какие данные мне нужны в конкретном контексте.
Метод find
на javax.persistence.EntityManager
просто позволяет запросить объект на основе первичного ключа. Но возможно ли использовать графики сущностей в более сложных сценариях, например. с объектами Criteria или запросами HQL? Например, поиск объектов с другими условиями, чем с помощью первичного ключа, возможно, даже для условий ассоциации.
Надеюсь, я поняла. Спасибо заранее!