1
IAM的串联串和表达的情况下,语句时的条件满足如下所述的代码中使用concat函数在case语句。如何使用JPA条件查询
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Object[]> cq = builder.createQuery(Object[].class);
Root<StudentRegistration> root = cq.from(StudentRegistration.class);
Expression<Object> str = builder.selectCase().when(builder.greaterThanOrEqualTo(root.get(StudentRegistration_.studentRegistrationGrade), 3),builder.concat("CDATA",root.get(StudentRegistration_.studentRegistrationGrade))).otherwise("-1");
cq.select(str);
em.createQuery(cq).getResultList();
由于编写concat函数的情况下,语句iam得到下面的异常。我试图通过给builder.literal(),但IAM未能解决这个问题的所有可能的方式。自两天以来,我一直在触及这个问题。请帮助我。
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: || near line 1, column 314 [select case when generatedAlias0.studentRegistrationGrade >=3 then :param0 || generatedAlias0.studentRegistrationGrade else :param1 end from StudentRegistration as generatedAlias0]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1750)
在此先感谢
是.....所有的查询,不同的是这个运行良好。 –
我认为,生成的SQL缺少括号。在这里发布你的配置文件。您使用的是最新版本的JPA提供程序吗? (:参数0 || generatedAlias0.studentRegistrationGrade) –