gpt4 book ai didi

slick - 在 Slick 案例类中定义多对一引用

转载 作者:行者123 更新时间:2023-12-02 07:36:03 27 4
gpt4 key购买 nike

Another question通过在“一”案例类 (Directorate) 中定义一个返回“多”类的 Seq 的方法来回答如何定义一对多关联(服务区)。但它没有解决问题的“双向”部分。

使用该示例,我想看看如何从另一个方向遍历关联。而不是

case class ServiceArea(areaCode: String, dirCode: String, name: String)

我想看看

case class ServiceArea(areaCode: String, directorate: Directorate, name: String)

Slick 可以吗?因为当我尝试类似的东西时

object ServiceAreas ...
def * = areaCode ~ directorate ~ name <> (ServiceArea, ServiceArea.unapply _)

编译失败,未找到类型为 TypeMapper[ForeignKeyQuery[ServiceAreas,ServiceArea]] 的证据参数的隐式值。

最佳答案

你要稍微调整一下自己的思维方式。 Slick 处理查询的组合和执行,但正如您在评论中提到的,它不是 ORM(谢天谢地)。

查看您引用的代码:

case class ServiceArea(areaCode: String, dirCode: String, name: String)

object ServiceAreas extends Table[ServiceArea]("SERVICE_AREAS") {

def areaCode = column[String]("AREAE_CODE", O.PrimaryKey)

def dirCode = column[String]("DIRECTORATE_CODE")

def name = column[String]("NAME")

def directorate = foreignKey("DIR_FK", dirCode, Directorates)(_.dirCode)

def * = areaCode ~ dirCode ~ name <> (ServiceArea, ServiceArea.unapply _)
}

directorate 的链接已经由可导航的外键定义。

所以现在您可以编写这样的查询:

   def directorates = for {
area <- Parameters[String]
sa <- ServiceAreas if sa.areaCode === area
dir <- sa.directorate
} yield dir

这将为每场比赛产生一个理事会。

关于slick - 在 Slick 案例类中定义多对一引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16393785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com