我正在尝试将分页与EntityManager.createNativeQuery(). 下面是我正在使用的骨架代码:
var query = em.createNativeQuery("select distinct id from ... group by ... having ...");
List<BigDecimal> results = query
.setMaxResults(pageSize)
.setFirstResult(pageNumber * pageSize)
.getResultList();
Run Code Online (Sandbox Code Playgroud)
当pageNumber是 0(第一页)时,我得到预期的 BigDecimals 列表:
但是一旦pageNumber> 0(例如,第二页),我就会得到一个对象列表,这个列表中的每个对象似乎都包含两个 BigDecimal,其中第一个包含来自数据库的值,第二个 BigDecimal 似乎是这一行的位置。
显然我得到了这个例外
java.lang.ClassCastException: 类 [Ljava.lang.Object; 不能强制转换为 java.math.BigDecimal 类
有人可以解释这种差异,以及如何修复它以始终返回 BigDecimals 列表?谢谢你。
更新 1:我创建了一个示例项目来重现此问题。我只能使用 Oracle 数据库重现此问题。使用 H2 数据库,它运行良好,并且我始终得到一个与页码无关的 BigDecimals 列表。