【问题标题】:Getting all entities from a slick query从一个灵活的查询中获取所有实体
【发布时间】:2021-04-29 21:02:22
【问题描述】:

如何在 slick 3.0.0 中从 Query[Ta​​bleType] 或 Query[Ta​​bleType, EntityType, Seq] 中读取所有实体?教程中有“result”方法,但在所有配置后都没有定义。

编辑:

我已尝试使用此模型的 qbooks.result 和 (for(book

import java.sql.Date
import slick.driver.H2Driver.api._
import slick.backend.DatabasePublisher
import slick.driver.JdbcProfile
import entities._

object tables {
  private val db = Database.forConfig("h2db")

  //one of the table queries
  val qbooks = TableQuery[Books]

  db.run(
    DBIO.seq(
      qbooks.schema.create,
      ...
    )
  )

  //one of the tables
  class Books(tag: Tag) extends Table[Book](tag, "books") {
    def isbn = column[Int]("isbn", O.PrimaryKey, O.AutoInc)
    def author = column[String]("author")
    def title = column[String]("title")
    def year = column[Int]("edition_year")
    def amount = column[Int]("amount")
    def * = (isbn, author, title, year, amount) <>
        (Book.tupled, Book.unapply)
  }

【问题讨论】:

  • 您仍应使用结果方法。可能是您的 IDE 无法推断结果方法存在。 IntelliJ 有(或最近有)这个问题。 youtrack.jetbrains.com/issue/SCL-8436。您是否尝试过在 IDE 之外进行编译?
  • 仍然存在:“值结果不是 slick.lifted.TableQuery[TTable] 的成员”和“值结果不是 slick.lifted.Query[TTable, Entity,Seq] 的成员。 "
  • 您可以发布更多代码吗?

标签: scala slick


【解决方案1】:

val qbooks = TableQuery[Books] 似乎是一个宏(必须在编译器中启用宏吗?)。我没有使用过那种语法,但以下为我编译了

//one of the table queries
  object qbooks extends TableQuery[Books](tag ⇒ new Books(tag)) {
    def all = qbooks.result
  }

db.run(qbooks.all)

【讨论】:

  • 感谢您的回答。但我仍然无法读出实体。
  • 是的,它编译但不是我想要的方式。我仍然无法将其设为实体列表。
  • @StevenDobay 你能更具体一点,为什么你不能让它成为实体列表吗?如果它编译,你应该可以像这样访问你的书:db.run(qbooks.all).map(books =&gt; /* do something with your books here */) 其中books 的类型是Seq[Book]
  • @Roman13 现在它可以工作了 - 以一种丑陋的方式,因此我放弃了光滑。
  • @Magnus Eklund 从数据库中读取值 - 这是一项非常简单的任务。它不是很灵活,需要太多配置。每年,我都想在我的一个项目中使用 slick,但总是有巨大的变化让我做不必要的工作。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2020-06-21
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多