Usando resultados JDOQL em Scala
-
10-07-2019 - |
Pergunta
Eu estou tentando usar uma JDO com o Google App Engine e Scala. A API para o Object
executar retornos (mas é realmente uma coleção java) e quero colocá-lo em uma lista scala para iterate sobre ele.
Os meus olhares código como este até agora:
val pm = PMF.factory.getPersistenceManager
val query = "select from User "
val gamelist:List[User] = List(pm.newQuery(query).execute.toArray:_ *)
O erro de compilação neste momento é toArray não é um membro do objeto. Qual é a melhor maneira de fazer o acima? Eu tentei usar .asInstanceOf[java.util.Collection[User]]
, mas foi uma tentativa falhada.
Solução
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(_))
Outras dicas
O problema é que a coleta de Java não é uma coleção scala. Youy precisa as conversões implícitas no pacote 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow