我在 Scala 中使用 JDO 和 DataNucleus 类型安全查询语言。因此,我的代码如下所示:
val id: Long = // something
val cand: QDbObject = QDbObject.candidate()
pm.query[DbObject].filter(cand.id.eq(id))...
简而言之,这将对字段等于的所有DbObject
s运行查询。不幸的是,我收到以下警告:id
id
NumericExpression[Long] and Long are unrelated: they will most likely
never compare equal
很明显,Scala 编译器认为这NumericExpression[Long]
是使用 的内置定义eq()
,类似于==
,但由于这是来自 Java,因此该eq()
方法与 Scala 的方法完全无关eq()
。
有没有办法摆脱警告?显然,这会发生很多,我担心这些非警告会隐藏真正的警告。
更新(2013-06-29)
这已在 Scala 2.10.2 中修复。警告消失了。