Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 使用SELECT CASE WHEN的JPA查询_Spring Mvc_Jpa_Spring Data Jpa - Fatal编程技术网

Spring mvc 使用SELECT CASE WHEN的JPA查询

Spring mvc 使用SELECT CASE WHEN的JPA查询,spring-mvc,jpa,spring-data-jpa,Spring Mvc,Jpa,Spring Data Jpa,有这样的疑问, select * from job_profile where case when exists ( select 1 from job_profile where screening_type_id = 2 and job_category_id = 4 ) then screening_type_id = 2 and job_category_id = 4 else screening

有这样的疑问,

select *
from job_profile
where case
    when exists (
        select 1
        from job_profile
        where screening_type_id = 2 and job_category_id = 4 
        )
    then screening_type_id = 2 and job_category_id = 4 
    else screening_type_id =4
    end; 
我需要用JPA写这篇文章

String GET_JOB_VACCINATIONS_BY_JOB_CAT_ID_AND_SCRN_TYPE_ID = "SELECT jobvacc FROM JobVaccination jobvacc WHERE  CASE"
            + " WHEN EXISTS (  SELECT 1 FROM  JobVaccination jobvacc2 WHERE  jobvacc2.jobCategoryMast.jobCategoryId=:jobCategoryId AND jobvacc2.screeningTypeMast.screeningTypeId=:screeningTypeId )"
            + " THEN  jobvacc.jobCategoryMast.jobCategoryId=4 AND jobvacc.screeningTypeMast.screeningTypeId=2 "
            + " ELSE jobvacc.screeningTypeMast.screeningTypeId=2"
            + " END";
尝试了这种方法,引发异常,如:org.hibernate.hql.internal.ast.QuerySyntaxException:意外标记:=第1行第260列附近[选择

我们不能用JPA编写案例查询吗


参考了该链接,该链接回答是。

问题似乎在于当尝试替换查询中的参数时,您是否可以尝试一个没有参数的示例来检查case KeyWork是否工作正常?尝试了这种方式**String GET\u JOB\u CAT\u ID和\u SCRN\u TYPE\u ID=从jobvacc中选择jobvacc WHERE case+when EXISTS从JobVac2中选择1,其中JobVac2.JobCategoryMaster.jobCategoryId=4和JobVac2.screeningTypeMast.screeningTypeId=4+然后jobvacc.JobCategoryMaster.jobCategoryId=4和jobvacc.screeningTypeMast=2+结束;**-相同的例外情况不允许然后想一想,屏蔽类型为2,作业类别为4,否则屏蔽类型为4是一个合法的SQL查询片段。实际大小写应该用在SELECT子句而不是WHERE子句中。你想用这个片段做什么?查询语句工作得很好。在PostgreSQL中尝试过。如果这个屏蔽类型为2,作业类别为4返回清空然后获取数据屏蔽类型id=4。