这是我的HQL
select distinct p from PayerCriteria p where p.determinationRequest.id = :determinationRequestId
我认为唯一重要的未知因素是determinationRequest.id
是Long
。
答案 0 :(得分:1)
您不必像@uaiHebert所提到的那样创建Join对象。您可以使用以下方法创建hql查询的where谓词:
mvn pact:verify
我在下面的代码中添加了注释,以解释各行的作用。
dict
答案 1 :(得分:0)
如果您想使用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());