1
外鍵下面是我的HQL我怎麼可以重寫一個簡單的地方使用標準API
select distinct p from PayerCriteria p where p.determinationRequest.id = :determinationRequestId
我認爲唯一重要的未知這裏是determinationRequest.id
是Long
。
外鍵下面是我的HQL我怎麼可以重寫一個簡單的地方使用標準API
select distinct p from PayerCriteria p where p.determinationRequest.id = :determinationRequestId
我認爲唯一重要的未知這裏是determinationRequest.id
是Long
。
如果你想使用一個CriteriaAPI你需要做的:
final CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
final CriteriaQuery<PayerCriteria> criteriaQuery = criteriaBuilder.createQuery(PayerCriteria.class);
final Root<PayerCriteria> root = criteriaQuery.from(PayerCriteria.class);
criteriaQuery.select(root);
final Join join = root.join("determinationRequest");
final Predicate predicate = criteriaBuilder.equal(join.get("id"), 1);
criteriaQuery.where(predicate);
final TypedQuery<PayerCriteria> query = entityManager.createQuery(criteriaQuery);
System.out.println("------------>" + query.getResultList());
有一個框架,可以說更容易負擔名爲EasyCriteria(http://easycriteria.uaihebert.com)。上述標準將如下:
EasyCriteria<RegularEntityOne> easyCriteria = EasyCriteriaFactory.createQueryCriteria(entityManager, RegularEntityOne.class);
easyCriteria.innerJoin("regularEntityTwo");
easyCriteria.andEquals("regularEntityTwo.id", 1);
System.out.println("------------>" + easyCriteria.getResultList());