У меня есть проект, построенный на 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? Например, поиск объектов с другими условиями, чем с помощью первичного ключа, возможно, даже для условий ассоциации.
Надеюсь, я поняла. Спасибо заранее!