scala - Slick 如何在元组上解析 <> 方法

标签 scala slick

Linked from this question

我遇到了 Slick 的文档,发现它要求一个 def *表定义中的方法来获取映射投影。
所以这条线看起来像这样

def * = (name, id.?).<>(User.tupled,User.unapply)

Slick example here

我看到了 <>tuple 上调用方法- 在这种情况下是 Tuple2 .该方法定义在案例类 ShapedValue 上在 Slick 的代码中。如何找出进行查找的隐式方法?

这是我的进口:
import scala.concurrent.Await
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration.Duration
import slick.driver.H2Driver.api._
import slick.lifted.ShapedValue
import slick.lifted.ProvenShape

最佳答案

所以我自己想出了一个。
对象 Shape实现三个特征,即 ConstColumnShapeImplicits , AbstractTableShapeImplicitsTupleShapeImplicits .这三个特征处理与 Slick 中的 Shapes 相关的隐式转换。TupleShapeImplicits包含将 Tuple 转换为 TupleShape 所需的所有隐式转换方法。

现在在线(name, id.?, salary.?).<>(User.tupled,User.unapply)发生的事情是该方法 <>有一个隐式参数 ShapeShape 类因此进入隐式转换的范围。和 TupleShapeImplicits也进入范围。

关于scala - Slick 如何在元组上解析 <> 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35865321/

相关文章:

scala - 如何使用 Slick 进行 INSERT IGNORE 查询?

java - 线程中的异常 "main"java.io.IOException : Job failed

scala - Int 是 Scala 中的有序类型吗?

git - 如何使用 mingw 和 sbt 在 Windows 上获得 Specs2 颜色支持

scala - Slick 2.1.0 中可选的嵌套映射实体

mysql - Slick:返回具有自动增量 ID 的插入行

scala - 在没有 catch 或 finally block 的情况下,Scala 的 "try"是什么意思?

scala - 使用 Scala future 时,是否会将具有相同执行上下文的链式回调优化为同步调用?

scala - Slick 2.1.0 GroupBy 并获取所有列

mysql - 使用 slick 在 Play Framework 中创建一个 MySQL 连接