Hibernate 带表达式的JPA CriteriaBuilder子字符串
我有一个CriteriaBuilder,在那里我试图获得从1到(LengthOfString-5)的字符。但是,我无法获得所需的输出。下面是我想要的输出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
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));