我正在尝试在JPA中创建一个查询,该查询将获取一个ID并在给定ID的多个列上找到计数。
例如,我有一份工作,此资源可以添加属性。我需要找到每个属性的计数,并映射到给定作业ID的新VO。
场景。
Job A has
1 skillsType assigned
Job B has
2 skillsType assigned
我的数据库结构保存jobId
,skillType
和skillTypeId
。照原样,这将为我提供作业B的ID的2个值,但是我需要将其设置为一行,并按给定类型给出技能类型的计数。
我试图在存储库上创建一个VO以将值映射到它,但是它不起作用。
我的VO具有以下值:jobId
,softSkillsCount
,technicalSkillsCount
例如,作业B为 jobBIdValue,1、1而不是 jobBIdValue,softSkill,skillIdSoft jobBIdValue,technicalSkill,skillIdTechnical
到目前为止,我的代码是
NamedQuery = select new packagename.myJobViewVO(jobId, countOfSoftSkills,countOfTechnicalSkils) from JobView where jobId = 123
答案 0 :(得分:1)
可能不是最好的解决方案,但是下面的查询可以解决问题
select new packagename.myJobViewVO(jobId,
sum(case when skillType = 'soft' then 1 else 0 end ) as countOfSoftSkills,
sum(case when skillType = 'hard' then 1 else 0 end ) as countOfTechnicalSkils
) from JobView where jobId = 123 group by jobId