저는 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 컨트롤러의 일부 Future가 완료되지 않은 것을 알게되면서이 문제가 발생합니다 ...
확인. 그러나 그 이유는 '.value'가없는 다른 미래 (줄 아래)가 결코 완료되지 않는다는 것을 설명하지 못합니다. – Marin
말할 수 없습니다. 죄송합니다. 다른 쿼리가 작동합니까? –
흠 ... 더 이상 작동하지 않는 것 같아요 ... 며칠 전 일한 것처럼 이상합니다 – Marin