Mit JDOQL Ergebnisse in Scala
-
10-07-2019 - |
Frage
Ich versuche, eine JDO mit Google App Engine und Scala zu verwenden. Die api für die Rückkehr Object
execute (aber es ist wirklich eine Java-Sammlung) und ich möchte es in eine scala Liste, um über sie zu wiederholen.
Mein Code sieht wie folgt aus so weit:
val pm = PMF.factory.getPersistenceManager
val query = "select from User "
val gamelist:List[User] = List(pm.newQuery(query).execute.toArray:_ *)
Der Compiler-Fehler an diesem Punkt ist toArray ist kein Mitglied der Object. Was ist der beste Weg, um die oben genannten zu tun? Ich habe versucht, .asInstanceOf[java.util.Collection[User]]
zu verwenden, aber es war ein gescheiterter Versuch.
Lösung
Verwenden 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(_))
Andere Tipps
Das Problem ist, dass die Java-Sammlung keine scala Sammlung ist. Youy müssen die impliziten Konvertierungen in dem jcl
Paket:
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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow