2009-08-03 6 views
2

Google App EngineとScalaでJDOを使用しようとしています。実行のAPIはObjectですが(実際はJavaコレクションです)、スカラリストに入れて繰り返し処理します。ScalaでのJDOQL結果の使用

私のコードは、これまでのようになります。

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

この時点でコンパイルエラーがでtoArrayが、オブジェクトのメンバーではないです。上記を行う最善の方法は何ですか? .asInstanceOf[java.util.Collection[User]]を使用しようとしましたが、失敗しました。

答えて

1

使用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(_)) 
Youyは jclパッケージ内の暗黙の型変換が必要
1

問題は、Javaコレクションがスカラコレクションではないことです。

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 
関連する問題