CriteriaBuilder 无法解析方法“greaterThan(int, int)”

问题描述 投票:0回答:1

我正在形成一个查询,将数据库结果与 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”类型,并且它不希望这样。 在这种场景下如何形成规范。

java jpa criteria
1个回答
0
投票

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)));
© www.soinside.com 2019 - 2024. All rights reserved.