TypedQuery <boolean>返回BigDecimal

时间:2015-11-23 15:30:23

标签: jpa eclipselink jpql

我正在尝试编写一个返回boolean的JPQL查询,但即使我将结果类指定为Boolean.class,我的查询仍然会返回BigDecimal类型的对象。

Query q = em.createQuery(
    "SELECT CASE WHEN ( count(e) > 0 ) THEN TRUE ELSE FALSE END"                        
                    + "FROM MyEntity e "
                    // + WHERE CLause etc...
                    , Boolean.class);   
    // Setting query-Params etc.. 

    // Fails, because BigDecimal cannot be converted to Boolean
    // return q.getSingleResult();

   // Workaorund:
   BigDecimal res = (BigDecimal) q.getSingleResult();        
   return res.intValue() > 0;    

正如您所看到的,我有一个简单的解决方法,但我想知道,如果我的查询中存在问题,或者为什么我得到BigDecimal而不是布尔值?

我的JPA Provider是EclipseLink(2.6.0),我使用的是Oracle 11g

上面的查询是否存在(a)问题?或者(b)这种行为是JPA特定的还是(c)它与EclipseLink有关,还是(d)是因为Oracle不支持布尔值?

编辑我为此错误创建了一张票,你可以在这里找到它:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=482885

0 个答案:

没有答案