Scala中使用JDOQL结果
-
10-07-2019 - |
题
我试图使用JDO与谷歌App Engine和斯卡拉。该API的执行回报Object
(但它的确是一个Java集合),我想它变成一个阶列表来遍历它。
我的代码看起来是这样的到目前为止:
val pm = PMF.factory.getPersistenceManager
val query = "select from User "
val gamelist:List[User] = List(pm.newQuery(query).execute.toArray:_ *)
此时的编译错误是指定者没有对象的成员。什么是上面做的最好方法是什么?我试图用.asInstanceOf[java.util.Collection[User]]
,但它是一个失败的尝试。
解决方案
使用scala.collection.jcl.Conversions:
import scala.collection.jcl.Conversions._
...
// this gets you a List[User]
val gameList = pm.newQuery(query).execute.asInstanceOf[java.util.List[User]].toList
...
// or you can just iterate through the return value without converting it to List
pm.newQuery(query).execute.asInstanceOf[java.util.List[User]] foreach (println(_))
其他提示
的问题是,在Java集合不是一个阶集合。您需要的隐式转换的jcl
包:
import collections.jcl.Conversions._
import java.util.{Collection => JCollection}
val pm = PMF.factory.getPersistenceManager
val query = "select from User "
val users = pm.newQuery(query).execute.asInstanceOf[JCollection[User]]
val gamelist:List[User] = List(users.toArray: _*) //implicit conversion here
不隶属于 StackOverflow