为什么在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 方法)?
我一直在努力学习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 方法)?