在编写以下语句时,Eclipse建议我将criteriaBuilder.equal方法调用强制转换为(CriteriaBuilder),以便可以调用CriteriaBuilder的“ and”方法。

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


请注意,“等于”方法返回一个谓词类型的对象。我一直在研究CriteriaBuilder接口和Predicate接口的Java API。我在同一棵树中找不到CriteriaBuilder和Predicate。

我认为这是一个基本的Java问题。如何将实现谓词的对象转换为实现CriteriaBuilder的对象?

谢谢。

最佳答案

相反,您需要以下代码:

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


CriteriaQuery.and带有几个参数,每个Predicate应一起and

关于java - 将Predicate转换为CriteriaBuilder,这怎么可能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23586977/

10-09 05:38