Slick 中的 Scala 投影仅针对一列

2023-11-25

我正在关注自动增量字段的精美文档示例我在创建一个时遇到问题映射投影那......好吧,只有一栏。

case class UserRole(id: Option[Int], role: String)

object UserRoles extends Table[UserRole]("userRole") {
  def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)
  def role = column[String]("ROLE")
  // ...
  def * = id.? ~ role <> (UserRole, UserRole.unapply _)
      // NEXT LINE ERRORS OUT
  def forInsert = role <> ({t => UserRole(None, t._1)}, {(r: UserRole) => Some((r.role))}) returning id   
}

错误是“值 不是 scala.slick.lifted.Column[String] 的成员”

我还认为像这样设计我的模式会更有效:

case class UserRole(role: String)

object UserRoles extends Table[UserRole]("userRole") {
  def role = column[Int]("ROLE", O.PrimaryKey)
  // ...
  def * = role <> (UserRole, UserRole.unapply _)

}

但后来我也开始遇到与上面相同的错误。 “值 不是 scala.slick.lifted.Column[String] 的成员”

我到底在做什么?难道我只是没有一个投影不再因为我只有一栏了吗?如果是这样,什么should我要做什么?


这是 Slick 的一个已知问题;映射投影不适用于单列。看https://github.com/slick/slick/issues/40

幸运的是,您的代码不需要映射投影即可工作。只需省略之后的所有内容(包括)<>. See scala slick 方法我到目前为止还无法理解对预测有很好的解释。它包括您开始工作所需的信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Slick 中的 Scala 投影仅针对一列 的相关文章

随机推荐