我一直在尝试学习DataNucleus和JDO并发现以下表达式,其中pm是PersistenceManager
pm.newQuery(A.class)
.filter("this.id==:id")
.setParameters(id)
.executeUnique();
返回ForwardQueryResult的一个实例,它是返回多个结果的execute方法返回的实例。但是,executeUnique
的签名和描述表明它应该返回传递给newQuery
的类的实例。为什么返回ForwardQueryResult?请注意,编译时推断的返回类型为A
,但将表达式分配给类A
的变量会产生ClassCastException
答案 0 :(得分:0)
这看起来像一个bug,因为executeUnique
的重点是返回候选/结果而不必从List中提取它(这是你看到的返回类型)。也许它已经修复了当前的代码库(以及每晚构建版本),否则报告它。
作为一种解决方法,只需在查询中调用setUnique()
(旧的API方式)?