相关疑难解决方法(0)

JPA本机查询返回Double或BigDecimal

我有以下简单的代码:

@PersistenceContext(name = "mycontext")
private EntityManager entityManager;

public void getAggregatePower() {

    String sqlString = "SELECT SUM(power) FROM mytable";
    Object singleResult = entityManager.createNativeQuery(sqlString).getSingleResult();
    System.out.println(singleResult.getClass().getName());

}
Run Code Online (Sandbox Code Playgroud)

当我在真实环境中运行时,会打印打印指令java.math.BigDecimal.但是当我在单元测试环境中运行它时,会打印出打印指令java.lang.Double.
在这两种情况下,我都使用WildFly 9服务器和Postgresql 9.4数据库.我还使用Arquillian进行单元测试.对我来说,唯一明显的区别是数据库中的记录数.表中
powermytable是a numeric(10,3).

我想避免丑陋的代码,例如:

if (singleResult instance of Double) {
    ...
} else if (singleResult instance of BigDecimal) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

无论我的运行环境如何,是否有办法始终拥有相同的实例?

java postgresql jpa wildfly-9

3
推荐指数
1
解决办法
6393
查看次数

标签 统计

java ×1

jpa ×1

postgresql ×1

wildfly-9 ×1