Hibernate 带表达式的JPA CriteriaBuilder子字符串

Hibernate 带表达式的JPA CriteriaBuilder子字符串,hibernate,spring-data-jpa,criteria-api,Hibernate,Spring Data Jpa,Criteria Api,我有一个CriteriaBuilder,在那里我试图获得从1到(LengthOfString-5)的字符。但是,我无法获得所需的输出。下面是我想要的输出 select * from tbl_job job1_ inner join tbl_customer customer2_ on job1_.customer_id=customer2_.id whe

我有一个CriteriaBuilder,在那里我试图获得从1到(LengthOfString-5)的字符。但是,我无法获得所需的输出。下面是我想要的输出

select
            *
        from tbl_job job1_     

        inner join
            tbl_customer customer2_ 
                on job1_.customer_id=customer2_.id 
        where
            job1_.customer_id=customer2_.id 
                    and //

        group by SUBSTRING(job1_.code,1,(LENGTH(job1_.code)-5))
我也尝试过这种方法,但我的IDE在(cb.length(root.get(“code”))-5)下描述了错误,“运算符-未定义参数类型表达式int”

最终规范=(根、查询、cb)->{
query.orderBy(cb.asc(root.get(“code”));
groupBy(cb.substring(root.get(“代码”),1,(cb.length(root.get(“代码”)-5));
返回cb和(
//...
};
这可能是什么原因?
感谢您的帮助。

尝试检查
cb.length(root.get(“code”))-5的操作数类型。
左侧是
表达式
,右侧是
int
。没有操作员处理该问题


必须在表达式中包含计算
-5

尝试检查
cb.length(root.get(“code”))-5的操作数类型。
左侧是
表达式
,右侧是
int
。没有操作员处理该问题


您必须在表达式中包含计算
-5

创建一个保存减法结果的
表达式,并在
子字符串中使用它
方法:

Expression<Integer> lengthMinus5 = cb.sum(cb.length(root.get("code")), -5);
Expression<Integer> one = cb.literal(1);
query.groupBy(cb.substring(root.get("code"), one , lengthMinus5 ));
Expression lengthMinus5=cb.sum(cb.length(root.get(“code”)),-5);
表达式一=cb.literal(1);
groupBy(cb.substring(root.get(“code”),一,lengthMinus5));

创建一个保存减法结果的
表达式
,并在
子字符串
方法中使用它:

Expression<Integer> lengthMinus5 = cb.sum(cb.length(root.get("code")), -5);
Expression<Integer> one = cb.literal(1);
query.groupBy(cb.substring(root.get("code"), one , lengthMinus5 ));
Expression lengthMinus5=cb.sum(cb.length(root.get(“code”)),-5);
表达式一=cb.literal(1);
groupBy(cb.substring(root.get(“code”),一,lengthMinus5));