由于不推荐使用hibernate.criteria API,我需要协助将某些方法转换为JPA criteriaQuery。
使用单一条件和我可以处理的有限参数的简单调用,但是如何从使用多个根实体创建的休眠条件转换。这是需要转换的org.hibernate.criteria代码
Criteria crit =
session.createCriteria(getType())
.createCriteria("deviceInfo"
.createCriteria("deviceSize");
crit.add(Restrictions.ilike("upperName", modelName));
List<Device> matches = crit.list();
通过对createCriteria的单一调用我可以管理这样的转换。他们看起来像这样
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Workflow> cq = cb.createQuery(getType());
Root<getType()> model = cq.from(getType());
cq.select(model);
cq.where(cb.equal(model.get("primaryEntityId"), entityId));
TypedQuery<getType()> q = entityManager.createQuery(cq);
List<Workflow> matches = q.getResultList();
我唯一无法在JPA中重新创建的是传递给createCriteria的两个关联路径