将谓词转换为CriteriaBuilder,怎么可能?

时间:2014-05-10 22:28:12

标签: java jpa

在编写以下语句时,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的对象?

感谢。

1 个答案:

答案 0 :(得分:1)

而不是那样,你需要这个代码:

criteriaQuery.where(criteriaBuilder.and(
    criteriaBuilder.equal(subscriptionRoot.get("user"), user),
    criteriaBuilder.equal(subscriptionRoot.get("plan"), plan)));

CriteriaQuery.and需要多个参数,每个Predicate应该and组合在一起。