Jpa TypedQuery<;布尔值>;返回BigDecimal

Jpa TypedQuery<;布尔值>;返回BigDecimal,jpa,eclipselink,jpql,Jpa,Eclipselink,Jpql,我试图编写一个JPQL查询,返回一个布尔值,但即使我将结果类指定为布尔值。类,我的查询仍然返回类型为BigDecimal的对象 Query q = em.createQuery( "SELECT CASE WHEN ( count(e) > 0 ) THEN TRUE ELSE FALSE END" + "FROM MyEntity e " // + WH

我试图编写一个JPQL查询,返回一个
布尔值
,但即使我将结果类指定为
布尔值。类
,我的查询仍然返回类型为
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而不是Boolean

我的JPA提供商是EclipseLink(2.6.0),我使用的是Oracle 11g

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


编辑我为这个bug创建了一个记录单,您可以在这里找到它:

我投票赞成(d),但这很奇怪。我投票赞成(c),因为JPA提供者应该处理DB“问题”,而不是将它们暴露给用户。使用DataNucleus和相同的RDBMS尝试相同的查询时,会返回一个布尔值,这是应该的。在您的JPA Provider上提出一个bug我猜它是“c”和“d”的组合,因为Oracle不了解正确与否。显示生成的SQL(带参数),并用EclipseLink提交一个bug,让它解决这个问题,因为它可以记住它对true/false使用了什么,并为您转换回值。我为这个问题创建了一个记录单。如果有人对此感兴趣,您可以在此处找到门票: