Вы можете использовать граф сущностей, чтобы указать, какие свойства должны быть извлечены напрямую (eagar way)
Вы аннотируете одну из своих сущностей с помощью
@NamedEntityGraph(
name = "report-eg",
attributeNodes = {
@NamedAttributeNode("foo"),
@NamedAttributeNode(value = "bar", subgraph = "bar-eg"),
},
subgraphs = {
@NamedSubgraph(
name = "bar-eg",
attributeNodes = {
@NamedAttributeNode("qux")
}
)
}
)
И затем вы используете его в выборке
EntityGraph entityGraph = entityManager.getEntityGraph("report-eg");
Map<String, Object> properties = new HashMap<>();
properties.put("javax.persistence.loadgraph", entityGraph);
Post post = entityManager.find(Foo.class, id, properties);
Очевидно, что вам, вероятно, придется настроить этот график для ваших нужд, но он покажет вам путь.
В качестве альтернативы, вы можете использовать Criteria API. Это позволяет напрямую указать, какие отношения должны быть fetched
(в отличие от объединения)