问题描述
我正在尝试对EntityManager.createNativeQuery()
使用分页。下面是我正在使用的框架代码:
var query = em.createNativeQuery("select distinct id from ... group by ... having ...");
List<BigDecimal> results = query
.setMaxResults(pageSize)
.setFirstResult(pageNumber * pageSize)
.getResultList();
当pageNumber
为0(第一页)时,我得到了预期的BigDecimals列表:
但是只要pageNumber
> 0(示例,第二页),我就会得到一个对象列表,并且该列表中的每个对象似乎都包含两个BigDecimals,其中第一个包含来自db的值,第二个BigDecimal似乎是该行的位置。
显然我得到了这个例外
java.lang.ClassCastException:类[Ljava.lang.Object;不能转换为类java.math.BigDecimal
有人可以解释这个差异吗?如何解决这个差异以始终返回BigDecimals列表?谢谢。
Update-1 :我创建了a sample project来重现此问题。我只能使用Oracle数据库来重现此问题。使用H2数据库,它运行良好,并且我始终获得与页码无关的BigDecimals列表。
Update-2 :我还创建了a sample project with H2,可以在没有此问题的情况下正常工作。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)