为什么executeUnique在DataNucleus中返回forwardQueryResult?

时间:2017-04-30 04:26:30

标签: java jdo datanucleus

我一直在尝试学习DataNucleus和JDO并发现以下表达式,其中pm是PersistenceManager

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

返回ForwardQueryResult的一个实例,它是返回多个结果的execute方法返回的实例。但是,executeUnique的签名和描述表明它应该返回传递给newQuery的类的实例。为什么返回ForwardQueryResult?请注意,编译时推断的返回类型为A,但将表达式分配给类A的变量会产生ClassCastException

1 个答案:

答案 0 :(得分:0)

这看起来像一个bug,因为executeUnique的重点是返回候选/结果而不必从List中提取它(这是你看到的返回类型)。也许它已经修复了当前的代码库(以及每晚构建版本),否则报告它。

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