【发布时间】:2013-07-15 19:26:35
【问题描述】:
我最近在此处提出了另一个 Slick 问题 (Slick table Query: Trouble with recognizing values)。请多多包涵!!我是数据库新手,Slick 在文档方面似乎特别差。不管怎样,我有这张桌子:
object Users extends Table[(Int, String)]("Users") {
def userId = column[Int]("UserId", O.PrimaryKey, O.AutoInc)
def userName = column[String]("UserName")
def * = userId ~ userName
}
第一部分
我正在尝试使用此函数进行查询:
def findByQuery(where: List[(String, String)]) = SlickInit.dbSlave withSession {
val q = for {
x <- Users if foo((x.userId, x.userName), where)
} yield x
q.firstOption.map { case(userId, userName) =>
User(userId, userName)}
}
其中“where”是搜索查询列表 //ex. ("userId", "1"),("userName", "Alex")
“foo”是一个测试相等性的辅助函数。我遇到了类型错误。
x.userId 的类型为 Column[Int]。如何将其作为 Int 进行操作?我试过铸造,例如:
foo(x.userId.asInstanceOf[Int]...)
但我也遇到了麻烦。如何处理 Slick 返回类型?
第二部分 有谁熟悉铸造功能:
def * = userId ~ userName (User, User.unapply _)
?我知道这个问题有一些很好的答案,最值得注意的是:scala slick method I can not understand so far 和一个非常相似的问题:mapped projection with companion object in SLICK。但是任何人都可以解释为什么编译器会响应
<> method overloaded
为了那一行简单的代码?
【问题讨论】:
标签: database scala slick scalatra