使用具有复杂条件的 JPA 实体图
我有一个建立在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
在这里,我只是获取一个带有填充集合的对象。这在上述情况下效果很好。但是,如果我想获取给定公司的全部或部分评论,该怎么办?即,与具有给定 ID 的公司关联的对象。我想要一个而不是一个带有.这只是一个例子 - 基本上我正在寻找更大的灵活性,而不是简单地基于主键查找对象。我可以毫无问题地使用HQL做到这一点,但是我必须根据我在特定上下文中需要哪些数据来编写几个类似的查询。Company
reviews
Review
List<Review>
Company
List<Review>
的方法只是可以基于主键查询对象。但是,是否可以以某种方式在更复杂的场景中使用实体图,例如,使用 Criteria 对象或 HQL 查询?例如,查找具有除主键以外的其他条件的对象 - 甚至可能是关联条件。find
javax.persistence.EntityManager
我希望我把自己说清楚。提前致谢!