【发布时间】:2014-08-21 12:32:35
【问题描述】:
我正在使用这样的本机查询:
public Long count() {
String sql = "SELECT COUNT(t.task_id_t100) from T100_TASK t ";
Query query = entityManager.createNativeQuery(sql);
return (Long) query.getSingleResult();
}
这总是有效的。今天我收到了ClassCastException,因为query.getSingleResult() 返回了BigDecimal。我不记得改变了什么。
answer 中的提示告诉Note that in some cases result type may depend on the database, i.e. it can be something like BigDecimal
在哪些情况下?
【问题讨论】:
-
有些 RDBMS 将返回 BigDecimal 的等价物,有些则不会。这是 RDBMS 供应商没有实现对“标准 SQL”的相同解释的缺点之一。您是否更改了 RDBMS?更安全地查看返回时它是什么类型并相应地进行转换
-
我认为最好的方法是将其返回/转换为
Number,并使用longValue()方法。 -
Number.longValue() 工作正常。 @NeilStockton 没有。 rdbms 没有改变。因此问题。这是一种奇怪的行为。