我正在使用Hibernate4 + PostgresSql。 我需要从我的数据库中获取一个id列表,而不需要获得整个对象。 我使用本机查询(因为它是分层的),它看起来像:
String s = hierachical_part_skipped +"select id " +
"from search_hierarchy " +
"order by id";
Query q = getEntityManager().createNativeQuery(s);
List<Long> resList = new ArrayList<>();
List<BigInteger> biglist = q.getResultList();
for (Object id : biglist) {
System.out.print(id+",");
resList.add(id.longValue());
}
好吧,三次我的bigList中有一次充满了错误的值! 我有 10,20,30,40,50,60,70,80,90,100 ... 27350 代替 1,2 ... 2735 (每个值都加一个零)。 不通过Hibernate手动执行的本机查询返回正确的值。
我已经尝试将结果检索为对象列表,但结果是相同的
答案 0 :(得分:0)
我找到了足够的解决方法
s.append("select id \\:\\:numeric " + //that's a hack
"from search_department " +
"order by id");
Query q = getEntityManager().createNativeQuery(s);
List<Long> resList = new ArrayList<>();
List<BigDecimal> biglist = q.getResultList();
for (BigDecimal id : biglist) {
System.out.print(id + ",");
resList.add(id.longValue());
}
不过,我想知道为什么BigInteger工作不正确