在编写以下语句时,Eclipse建议我将criteriaBuilder.equal方法调用(CriteriaBuilder),以便我可以调用"和" CriteriaBuilder的方法。
criteriaQuery.where((criteriaBuilder.equal(subscriptionRoot.get("user"), user))
.and(criteriaBuilder.equal(subscriptionRoot.get("plan"), plan)));
请注意"等于" method返回Predicate类型的对象。我正在研究CriteriaBuilder接口和Predicate接口的Java API。我在同一棵树上找不到CriteriaBuilder和Predicate。
我认为这是一个基本的Java问题。如何将实现Predicate的对象转换为实现CriteriaBuilder的对象?
感谢。
答案 0 :(得分:1)
而不是那样,你需要这个代码:
criteriaQuery.where(criteriaBuilder.and(
criteriaBuilder.equal(subscriptionRoot.get("user"), user),
criteriaBuilder.equal(subscriptionRoot.get("plan"), plan)));
CriteriaQuery.and
需要多个参数,每个Predicate
应该and
组合在一起。