我在混合的Java / Scala程序中使用了slick
Java代码需要从数据库中获取一些数据。
据我了解,推荐的方法是从数据库中获取Future,但我该如何从这里开始?我被迫等待结果(使用阻止Await.result)?我可以使用onComplete使Java与Scala类似吗?
当前(阻止)代码:
光滑的[斯卡拉]:def getUser(email: String): Option[User] = {
val findUser = users
.filter(_.email === email)
.result
.headOption
Await.result(db.run(findUser), Duration(1000, "millis")) // blocking :-(
}
爪哇:
if(UsersDataBase.getUser(email).isDefined()) {
...
}
答案 0 :(得分:2)
您需要将Scala Future
转换(或换行)为Java Future
。与Option
现在您可以使用repo
简单的例子是:
import scala.compat.java8.FutureConverters._
import java.util.concurrent.CompletionStage
import scala.concurrent.Future
val javaFuture:CompletionStage[String] = Future.successful("ok").toJava