私はSlickには新しく、いくつかの問題を抱えて私を苦しめています。Slick結果が見つかりませんでした
私のデータベースに私は自分のメールアドレスを持つユーザーを保存しました。ただし、このメソッドを実行すると(DAOで実装されています):
def getByEmail(email: String): Future[Option[User]] = {
println(s":${email}:")
println(db.run(users.filter(_.email === email).result.headOption).value)
db.run(users.filter(_.email === email).result.headOption)
}
印刷結果は[なし]です(電子メールが存在することを確認できます)。
slick.dbs.default.profile = "slick.jdbc.PostgresProfile$"
slick.dbs.default.db.driver = "org.postgresql.Driver"
slick.dbs.default.db.url = "jdbc:postgresql://localhost:5432/databasename"
全体DAOは以下のように実装されています:
マイapplication.confは、以下のように設定され、結果はどれもされていない続ける理由を私は理解していない
package dao
import javax.inject.{Inject, Singleton}
import models.User
import play.api.db.slick.{DatabaseConfigProvider, HasDatabaseConfigProvider}
import slick.jdbc.{JdbcProfile, PostgresProfile}
import slick.lifted.ProvenShape
import scala.concurrent.{ExecutionContext, Future}
/**
* Created by Marin on 08/09/2017.
*/
@Singleton
class UserDAO @Inject()(val dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) extends HasDatabaseConfigProvider[PostgresProfile] {
import profile.api._
private class UserTable(tag: Tag) extends Table[User](tag, "users") {
def id: Rep[Long] = column[Long]("id", O.PrimaryKey, O.AutoInc)
def email: Rep[String] = column[String]("email", O.Unique)
def name: Rep[String] = column[String]("name")
def surname: Rep[String] = column[String]("surname")
override def * : ProvenShape[User] = (id.?, email, name.?, surname.?) <> (User.tupled, User.unapply)
}
private val users = TableQuery[UserTable]
def add(user: User): Future[User] = {
val query = users returning users.map(_.id) into ((user, id) => user.copy(id = Some(id)))
db.run(query += user)
}
def get(id: Long): Future[Option[User]] = {
db.run(users.filter(_.id === id).result.headOption)
}
def getByEmail(email: String): Future[Option[User]] = {
println(s":${email}:")
println(db.run(users.filter(_.email === email).result.headOption).value)
db.run(users.filter(_.email === email).result.headOption)
}
def listAll: Future[Seq[User]] = {
db.run(users.result)
}
}
...私は」私のPlayコントローラのいくつかの未来は決して完了していないことに気づいたので、この問題に遭遇しました...
しかし、それは '.value'なしの他の未来(下の行)がなぜ完了しないのかを説明していません。 – Marin
私には分かりません。ごめんなさい。他のクエリは機能しますか? –
hm ... addntはもう動作しないようです...それは数日前に働いたので変です – Marin