我正在使用Play Framework,现在我正在尝试使用简单的表"用户"来访问PostgreSQL数据库,定义如下:
SELECT * FROM users;
id | first_name | last_name | email | password
-c--+------------+-----------+-------+----------
AI | text | text | text | text
在Play中,我有我的用户案例类:
case class User(id: Int, mail: String, pwd: String, firstName: String, lastName: String)
我正在使用以下导入:
import play.api.db.slick.DatabaseConfigProvider
import slick.driver.PostgresDriver
import slick.driver.PostgresDriver._
import slick.lifted.Tag
我可以将我的数据库用于以下
@Inject
// Inject Database config provider lib
var dbConfigProvider: DatabaseConfigProvider = _
val dbConfig = dbConfigProvider.get[PostgresDriver]
import dbConfig.driver._
我正在关注此地址上的Slick 3.0.0的文档:http://slick.typesafe.com/doc/3.0.0/queries.html#queries。为了构建我的请求,我首先尝试执行以下操作:
class Users(tag: Tag) extends Table[(Int,String,String,String,String)](tag, "users") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def mail = column[String]("email")
def pwd = column[String]("password")
def firstName = column[String]("first_name")
def lastName = column[String]("last_name")
def * = (id,mail,pwd,firstName,lastName)
}
这并不成功:我的IDE说Expression不符合预期的类型ProvenShape,./activator compile
说
[...] could not find implicit value for parameter tt: slick.ast.TypedType[Int]
我其次尝试使用以下链接slick.typesafe.com/doc/3.0.0/schemas.html#mapped-tables并写下:
class Users(tag: Tag) extends Table[User](tag, "users") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def mail = column[String]("email")
def pwd = column[String]("password")
def firstName = column[String]("first_name")
def lastName = column[String]("last_name")
def * = (id, mail, pwd, firstName, lastName) <> (User.tupled, User.unapply)
}
但IDE无法识别&#34;&lt;&gt;&#34;符号,加上unapply方法中缺少args ......
你有任何线索吗?我现在迷路了...
谢谢!
答案 0 :(得分:2)
经过数小时的研究,我终于找到了问题所在。为了解决这个问题,我有:
SubClass
libraryDependencies ++= Seq(
"com.typesafe.play" %% "play-slick" % "2.0.0",
"com.typesafe.play" %% "play-slick-evolutions" % "2.0.0"
)
现在一切都好。