我正在形成一个查询,将数据库结果与 API 请求数据进行比较,但出现以下错误:
无法解析方法“greaterThan(int, int)”。
我的代码如下所示。 2 来自 API 请求。
List<Predicate> predicates = new ArrayList<>();
predicates.add(criteriaBuilder.greaterThan(myFunc(root.get("amt")),2));
基本上 myFunc 函数会根据某些条件将 root.get("amt") 与某个数字相乘。但这对我不起作用,因为两个表达式都是“int”类型,并且它不希望这样。 在这种场景下如何形成规范。
greaterThan
的签名是:
<Y extends Comparable<? super Y>> Predicate
greaterThan(Expression<? extends Y> x, Expression<? extends Y> y)
换句话说,它接受的参数是值类型为
Expression
的 Comparable
对象。 Java 不知道如何将两个整数转换为两个 Expression
对象。
但是,如果您查看 CriteriaBuilder
的
javadoc,您还会看到一些比较
gt
实例的 Number
方法。所以以下应该有效:
predicates.add(
criteriaBuilder.gt(
Integer.valueOf(myFunc(root.get("amt"))),
Integer.valueOf(2)));