Java “多重”;选择Case";使用EclipseLink将语句聚合到命名查询中
我正在使用eclipselink v2.3在java代码中编写一个简单的查询。 这个查询必须只返回一个字符串和两个整数,我想这并不奇怪,至少我想 我正在构建的查询如下所示:Java “多重”;选择Case";使用EclipseLink将语句聚合到命名查询中,java,jpa,eclipselink,case,jpql,Java,Jpa,Eclipselink,Case,Jpql,我正在使用eclipselink v2.3在java代码中编写一个简单的查询。 这个查询必须只返回一个字符串和两个整数,我想这并不奇怪,至少我想 我正在构建的查询如下所示: q = entityManager.createQuery( "SELECT new com.myclass.CalculationQueryResult(transits.device.name," + " SUM(case when transits.direction = 1 then 1 el
q = entityManager.createQuery(
"SELECT new com.myclass.CalculationQueryResult(transits.device.name,"
+ " SUM(case when transits.direction = 1 then 1 else 0 end) ,"
+ " SUM(case when transits.direction = 0 then 1 else 0 end)) from Transits_Log transits "
+ " where transits.device.name in :devices and transits.dateTime >= :startDate"
+ " and transits.dateTime < :endDate group by transits.device.name" + " order by transits.device.name",
CalculationQueryResult.class);
正如您所看到的,SQL生成的语句在前两行是错误的,因为第一个和第二个和应该是一个相反的,而不是另一个
我是不是做错了什么?JPQL是否支持多个嵌套的大小写和和?有没有办法绕过错误(如果是这样的话),而不必直接编写本机SQL代码?这很奇怪。你确定你的JPQL是正确的并且是编译/部署的吗 你能试试2.4版本吗
如果它仍然发生,请记录一个bug。谢谢你和我一样的想法。我认为在编译/部署时没有任何错误。我目前正在eclipse/tomcat上直接调试应用程序。只是为了确定,是否有任何“缓存文件”(对不起,我是JPA初学者)我必须删除?然后,我将尝试2.4版本,并在必要时发布一个bug。你解决了吗?我也有类似的问题
SELECT t0.Name,
**SUM(CASE WHEN (t1.Direction = 1) THEN 1 ELSE 0 END)** ,
**SUM(CASE WHEN (t1.Direction = 1) THEN 1 ELSE 0 END)** FROM dbo.ZZZ t0,
YYYY t1
WHERE ((((t1.DeviceName IN ('XXXXX'))
AND (t1.DateTime >= {ts '2012-09-24 17:26:48.031'}))
AND (t1.DateTime < {ts '2012-09-24 18:26:48.031'}))
AND (t0.Name = t1.DeviceName)) GROUP BY t0.Name
ORDER BY t0.Name ASC