相关疑难解决方法(0)

如何使用Slick的映射表与外键?

我正在努力使用Slick提升的嵌入和映射表格.API对我来说很奇怪,也许只是因为它的构造方式对我来说是不熟悉的.

我想构建一个Task/Todo-List.有两个实体:

  • 任务:每个任务都有一个对下一个任务的可选引用.这样就构建了一个链表.目的是用户可以按其优先级排序任务.此顺序由任务到任务的引用表示.
  • TaskList:表示带有标签和对列表的第一个Task的引用的TaskList.

    case class Task(id: Option[Long], title: String, nextTask: Option[Task])
    case class TaskList(label: String, firstTask: Option[Task])


现在我尝试为这两个实体编写数据访问对象(DAO).

import scala.slick.driver.H2Driver.simple._
import slick.lifted.MappedTypeMapper

implicit val session: Session = Database.threadLocalSession
val queryById = Tasks.createFinderBy( t => t.id )

def task(id: Long): Option[Task] = queryById(id).firstOption

  private object Tasks extends Table[Task]("TASKS") {
    def id = column[Long]("ID", O.PrimaryKey, O.AutoInc)
    def title = column[String]("TITLE")
    def nextTaskId = column[Option[Long]]("NEXT_TASK_ID")
    def nextTask = foreignKey("NEXT_TASK_FK", nextTaskId, Tasks)(_.id)
    def * = id ~ title ~ nextTask <> (Task, Task.unapply …
Run Code Online (Sandbox Code Playgroud)

database orm persistence scala slick

9
推荐指数
1
解决办法
3327
查看次数

标签 统计

database ×1

orm ×1

persistence ×1

scala ×1

slick ×1