Scala - Slick - 获取包装选项的 TypedType[T]

2024-03-15

通常创建这样的自定义 ID:

case class CustomID(value: Int) extends MappedTo[Int]

并用 Option[CustomID] 等类型表示可为 null 的自定义 ID。但是,我希望能够将 Option[_] 移动到案例类中,如下所示:

case class OptCustomID(optValue: Option[Int])

更具体地说,我正在寻找一个 TypedType[OptCustomId],其行为类似于内置 TypedType[Option[Int]] 来处理与数据库 DDL 相关的内容。

有任何想法吗?


其实你不需要TypedType[OptCustomId]。处理具有类型字段的表的正确方法OptCustomID页面上有描述http://slick.lightbend.com/doc/3.3.0/userdefine.html http://slick.lightbend.com/doc/3.3.0/userdefined.html

  import slick.jdbc.PostgresProfile.api._

  case class OptCustomID(optValue: Option[Int])
  case class LiftedOptCustomID(optValue: Rep[Option[Int]])
  implicit object OptCustomIDShape extends CaseClassShape(LiftedOptCustomID, OptCustomID)

  case class Thing(id: OptCustomID, data: String)
  case class LiftedThing(id: LiftedOptCustomID, data: Rep[String])
  implicit object ThingShape extends CaseClassShape(LiftedThing.tupled, Thing.tupled)

  class ThingTable(tag: Tag) extends Table[Thing](tag, "things") {
    def id = column[Option[Int]]("id", O.PrimaryKey)
    def data = column[String]("data")
    def * = LiftedThing(LiftedOptCustomID(id), data)
  }

  val things = TableQuery[ThingTable]
  val result: DBIO[Option[Thing]] = things.filter(x => x.id === 1).result.headOption
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala - Slick - 获取包装选项的 TypedType[T] 的相关文章

随机推荐

  • 连接两个变量

    这就是我想做的 errmsg 1 Please make changes to your post errmsg 2 Please make changes to your post image error 1 echo errmsg er
  • Android 遥控器如何与 Google TV 配合使用

    关于如何做的任何想法Google TVAndroid 平台上的远程应用程序可以工作 我今天刚尝试过 通过 Wi Fi 进行配对后 它就开始工作了 其背后的理念是什么 好像没有使用Bluetooth 那么在电视上不安装任何组件的情况下它是如何
  • Visual Studio 键绑定配置文件

    Visual Studio 是否有用于其键绑定的人类可编辑的配置文件 选项 gt 环境 gt 键盘 对话框已完全损坏 或者至少使用起来太繁琐 并且自 Visual C 5 以来一直如此 我真的只想转到 Visual Studio 保存键绑定
  • MySQL 8 的 Hibernate 方言?

    MySQL 8 有 Hibernate 方言吗 或者我应该使用 Hibernate 附带的 org hibernate dialect MySQL57Dialect 吗 我正在使用休眠5 2 16 MySQL8Dialect org hib
  • 在 IIS URL Rewrite 2.0 中,为什么 HTTP_HOST 包含端口号?

    我正在尝试使用IIS URL 重写 2 0 http www iis net downloads microsoft url rewrite在 Windows 8 1 上使用 IIS 8 5 根据从重写规则访问 URL 部分 http ww
  • 为什么在使用 wprintf 时将 ©(版权符号)替换为 (C)?

    当我尝试打印版权符号时 with printf or write 它工作得很好 include
  • 无法让简单的引导模式工作

    我正在尝试让一个简单的引导程序模态示例正常工作 我遵循这个文件 http igotstamp appspot com pages javascript上面写着 您可以轻松激活页面上的模态 而无需编写一行 JavaScript 只需为元素提供
  • Visual Studio 展开/折叠键盘快捷键[重复]

    这个问题在这里已经有答案了 In Visual Studio if I have a code file open I can press CTRL M or CTRL M O to collapse all code blocks reg
  • 为什么这个类有两个构造函数?

    我在旨在说明构造函数的幻灯片中看到了这一点 我现在很困惑 因为它有两个具有相同工作的构造函数 接受在第二个构造函数中将 gpa 设置为零 为什么编码器需要重复this id id this name name 再次 为什么这个类需要两个构造
  • 来自 Python 的 AWS 网络负载均衡器后面的客户端 IP

    当在网络负载均衡器后面运行套接字服务器时 实例由 IP 指定 server sock socket socket family socket AF INET type socket SOCK STREAM proto socket IPPR
  • InvalidArgumentError:索引[0,0] = -1 不在 [0, 10) 中

    它与 MLP 一起进行二元分类效果很好 然而 在 LSTM 和卷积中 它给出了InvalidArgumentError 我发现 y 需要重塑 我就这么做了 我尝试了 x 的所有正值 并且模型运行良好 那么负值有什么问题呢 数据在代码中给出
  • Android 应用程序使用 android.permission.READ_LOGS - 这是不礼貌的吗?

    我有一个可以从 Android Market 获取的应用程序 一些用户要求在事情没有按预期进行时进行调试 我一直在考虑添加一个菜单项来显示输出 Process mLogcatProc null BufferedReader reader n
  • Dagger2:用组件本身注入模块提供的实现类

    考虑到模块都是通过 Dagger1 规范相互共享的complete false library true 您可以收到由 Provides通过构造函数参数的方法 就像这样 public class GetUserForUsernameTask
  • 如何计算列表中项目的出现次数

    我是 Dart 新手 目前我有一个重复项目列表 我想计算它们的出现次数并将其存储在地图中 var elements a b c d e a b c f g h h h e a 我想要得到这样的结果 a 3 b 2 c 2 d 2 e 2 f
  • 格式 - 帮助打印表格

    这个问题可能会以捂脸结束 但我已经尝试了一段时间 尽管阅读了超规范 但仍然卡住了 基本上我想做的是 format t 5d 1 23 2 312 23 456 1 7890 但不应该对 5 进行硬编码 而是应该从列表中计算 任何嵌套列表中最
  • 从 ANDROID 2.2 发送 UDP 包(HTC 希望)

    我有一个局域网 我想从我的 android htcdesire 发送一条 udp 消息到我的电脑 它们之间有一个 WLAN 路由器 问题是 UPD 消息永远不会到达 PC Android上的代码 package org example an
  • JSON 架构允许日期或空字符串

    我需要定义一个 JSON 模式 其中输入可以是日期或空字符串 我当前的 JSON 架构是 type object required FirstName DateOfBirth properties FirstName type string
  • R - 自动调整 Excel 列宽

    如何使用自动调整列宽openxlsx 我的其中一列有一个日期变量 例如21 08 2017 并且如果使用复制ctrl c从 Excel 中 并正常粘贴到其他地方 它显示为 如果增加列宽以显示 Excel 中的内容 则可以正常粘贴 我想将重复
  • 在 d3 中设置 id 问题

    这就是我正在做的 selection canvas selectAll circle data mydata selection enter append circle selection attr id function d i var
  • Scala - Slick - 获取包装选项的 TypedType[T]

    通常创建这样的自定义 ID case class CustomID value Int extends MappedTo Int 并用 Option CustomID 等类型表示可为 null 的自定义 ID 但是 我希望能够将 Optio