为什么在DataNucleus中executeUnique return forwardQueryResult?

Why does executeUnique return forwardQueryResult in DataNucleus?

我一直在努力学习DataNucleus和JDO,发现如下表达式,其中pm是一个PersistenceManager

pm.newQuery(A.class)
  .filter("this.id==:id")
  .setParameters(id)
  .executeUnique();

return 是 ForwardQueryResult 的一个实例,它是 return 由 return 多个结果的执行方法编辑的。但是,executeUnique 的签名和描述表明它应该 return 将 class 的实例传递给 newQuery。为什么它 returning ForwardQueryResult?请注意,编译时推导出的 return 类型是 A,但是将表达式分配给 class A 的变量会导致 ClassCastException

这看起来像一个错误,因为 executeUnique 的全部意义在于 return candidate/result 而不必从列表中提取它(这就是 return类型你看到的是)。也许它已经在他们当前的代码库(和每晚构建)中修复,否则报告它。

作为解决方法,只需在查询中调用 setUnique()(旧的 API 方法)?