在 Scala 中使用 JDOQL 结果

发布于 2024-07-30 03:48:37 字数 460 浏览 4 评论 0原文

我正在尝试将 JDO 与 Google App Engine 和 Scala 一起使用。 执行的 api 返回 Object (但它实际上是一个 java 集合),我想将它放入 scala 列表中以对其进行迭代。

到目前为止,我的代码如下所示:

val pm = PMF.factory.getPersistenceManager
val query = "select from User " 
val gamelist:List[User] = List(pm.newQuery(query).execute.toArray:_ *)

此时的编译错误是 toArray 不是 Object 的成员。 执行上述操作的最佳方法是什么? 我尝试使用 .asInstanceOf[java.util.Collection[User]],但这是一次失败的尝试。

I'm trying to use a JDO with Google App Engine and Scala. The api for the execute returns Object (but it's really a java collection) and I want to get it into a scala list to iterate over it.

My code looks like this so far:

val pm = PMF.factory.getPersistenceManager
val query = "select from User " 
val gamelist:List[User] = List(pm.newQuery(query).execute.toArray:_ *)

The compile error at this point is toArray is not a member of Object. What is the best way to do the above? I tried to use .asInstanceOf[java.util.Collection[User]], but it was a failed attempt.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

您的好友蓝忘机已上羡 2024-08-06 03:48:37

使用 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(_))

Use 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(_))
硬不硬你别怂 2024-08-06 03:48:37

问题是 Java 集合不是 scala 集合。 您需要 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

The problem is that the Java collection is not a scala collection. Youy need the implicit conversions in the jcl package:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文