我正在尝试编写一个返回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