CriteriaAPI:selectCase当时...语句中的错误

时间:2014-01-13 14:05:20

标签: sql eclipselink criteria-api

使用以下代码我在sql语句中出错:

Expression<Number> difference = queryBuilder.diff(A, B);
Predicate differenceGEtoZero = queryBuilder.ge(difference, new Long(0));
CriteriaBuilder.Case<Number> when = queryBuilder.<Number>selectCase().when(
                differenceGEtoZero, difference
        );
        queryDefinition.select(
                queryBuilder.construct(
                        State.class,
                        root.get("object"),
                        queryBuilder.sum(
                                when.otherwise(new Long(0))
                        )
                )
        );

我在CASE'S THEN部分中得到这个包含错误的sql语句:

SUM(
      CASE WHEN ((t1.A - t1.B) >= 0) 
      THEN ((t1.A - t1.B) >= 0)    //'>= 0'  should not appear here!!!
      ELSE 0 
      END ) 

我预计只会出现差异((t1.A - t1.B),而不是条件&gt; = 0。

我正在使用这个版本的lib:org.apache.openejb:javaee-api:6.0-5和eclipseLink 2.3.2作为提供者

你能否告诉我代码中有什么问题?

提前谢谢你。 NIC

1 个答案:

答案 0 :(得分:0)

似乎是以下版本的eclipseLink解决的错误。

使用2.5.1,一切正常。