Doobie 无法找到或构造类型 T 的 Read 实例

2023-12-28

我正在使用 doobie 查询一些数据,一切正常,如下所示:

case class Usuario(var documento: String, var nombre: String, var contrasena: String)

  def getUsuario(doc: String) =
     sql"""SELECT documento, nombre, contrasena FROM "Usuario" WHERE "documento" = $doc"""
      .query[Usuario]
      .option
      .transact(xa)
      .unsafeRunSync()

但是如果我声明一个具有类型限制的函数,如下所示:

 def getOption[T](f: Fragment): Option[T] = {
    f.query[T]
     .option
     .transact(xa)
     .unsafeRunSync()

}

我收到这些错误:

Error:(42, 12) Cannot find or construct a Read instance for type:
  T
This can happen for a few reasons, but the most common case is that a data
member somewhere within this type doesn't have a Get instance in scope. Here are
some debugging hints:
- For Option types, ensure that a Read instance is in scope for the non-Option
  version.
- For types you expect to map to a single column ensure that a Get instance is
  in scope.
- For case classes, HLists, and shapeless records ensure that each element
  has a Read instance in scope.
- Lather, rinse, repeat, recursively until you find the problematic bit.
You can check that an instance exists for Read in the REPL or in your code:
  scala> Read[Foo]
and similarly with Get:
  scala> Get[Foo]
And find the missing instance and construct it as needed. Refer to Chapter 12
of the book of doobie for more information.
    f.query[T].option.transact(xa).unsafeRunSync()

Error:(42, 12) not enough arguments for method query: (implicit evidence$1: doobie.util.Read[T], implicit h: doobie.LogHandler)doobie.Query0[T].
Unspecified value parameter evidence$1.
    f.query[T].option.transact(xa).unsafeRunSync()

有谁知道如何制作我想要的东西?我认为这是隐含的东西,但我不知道如何解决它。


为了doobie为了能够将 SQL 查询的结果转换为您的案例类,它需要一个实例Read 类型类在适用范围。

例如对于Usuario它需要实例Read[Usuario]。幸运的是,doobie能够得出类型类对于类型来自类型类它已经知道了,比如String,所以在大多数情况下,我们不需要显式创建它们。

在你的情况下,你想创建方法getOption有类型参数T,这意味着编译器不知道哪个类型类要寻找哪种类型。

您可以非常轻松地修复它,只需添加上下文绑定即可Read适合你的类型(比如T: Read或通过添加隐式参数)。这意味着你的方法将通过“要求”解决类型类稍后在编译时,T 的具体类型已经知道。

所以你的固定方法是:

def getOption[T: Read](f: Fragment): Option[T] = {
    f.query[T]
     .option
     .transact(xa)
     .unsafeRunSync()

或使用隐式参数:

def getOption[T](f: Fragment)(implicit read: Read[T]): Option[T] = {
    f.query[T]
     .option
     .transact(xa)
     .unsafeRunSync()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Doobie 无法找到或构造类型 T 的 Read 实例 的相关文章

  • 无法在 NetBeans 7.4rc1 上安装 nb-scala

    我已经安装了 NB 7 4rc1 并从下载了 nb scalahttp sourceforge net projects erlybird files nb scala http sourceforge net projects erlyb
  • Scala 正则表达式替换为匿名函数

    在 Ruby 中 我可以通过以下方式替换字符串中的字符 a one1two2three a gsub d e e to i 1 gt one2two3three 从第二行开始评估块的结果将替换模式中匹配的内容 我们可以在 Scala 中做类
  • 在 Scala 中设计方便的默认值映射

    我发现自己使用了很多嵌套映射 例如 Map Int Map String Set String 并且我希望在访问新密钥时自动创建新的 Map Set 等 例如 像下面这样 val m m 1992 foo bar 请注意 如果不需要 我不想
  • 强制类型差异

    在 Scala 中 我可以在编译时强制执行类型相等 例如 case class Foo A B a A b B implicit ev A B scala gt Foo 1 2 res3 Foo Int Int Foo 1 2 scala
  • 如何将 csv 文件读取为键值对的映射

    我的 csv 文件中有数据 例如 value key A Name B Name C Name 24 Age 25 Age 20 Age M Gender F Gender 我想解析它以生成以下地图 Map Name gt List A B
  • 通过spark-shell以静默模式执行scala脚本

    需要通过spark shell以静默模式执行scala脚本 当我使用时spark shell i file scala 执行后 我进入scala交互模式 我不想进入那里 我尝试执行spark shell i file scala 但我不知道
  • Spark SQL中如何按列降序排序?

    I tried df orderBy col1 show 10 但它是按升序排列的 df sort col1 show 10 也按升序排序 我查看了 stackoverflow 发现的答案都已过时或称为 RDD https stackove
  • kafka ProducerRecord 和 KeyedMessage 有什么区别

    我正在衡量卡夫卡生产者生产者的表现 目前我遇到了两个配置和用法略有不同的客户 Common def buildKafkaConfig hosts String port Int Properties val props new Proper
  • Scala 函数定义参数列表中不同的括号样式

    Scala 中以下两个函数定义有什么区别 1 def sum f Int gt Int a Int b Int Int code 2 def sum f Int gt Int a Int b Int Int code SBT 的控制台 RE
  • 为什么我的代码在 Spark Pregel 中执行需要很长时间?

    我在 Spark 中使用 Pregel 编写了处理图形的代码 但对于小数据集来说 它的执行速度非常非常慢 我以前用pregel写过程序 但是这段代码运行速度确实很慢 我的集群由 2 个工作人员组成 每个都有核心 i5 CPU 和 6 GB
  • 有没有好的 Clojure 基准测试?

    Edit Clojure 基准测试已达到基准游戏 http benchmarksgame alioth debian org u64q clojure html 我已经制作了这个问题社区维基并邀请其他人保持更新 有人知道 Clojure 性
  • 如何识别远程参与者?

    我有一个远程参与者 客户端 它正在向另一个远程参与者 服务器 注册 然后注销 使用关闭挂钩 然而 虽然服务器接收到注销 但实际sender财产是一个不同的 Channel 对象 所以在我的服务器日志中我有 Registered new cl
  • scala.concurrent.blocking - 它实际上做了什么?

    我花了一段时间学习 Scala 执行上下文 底层线程模型和并发性的主题 你能解释一下通过什么方式吗scala concurrent blocking 调整运行时行为 and 可以提高性能或避免死锁 如中所述scaladoc http www
  • 为什么我可以使用 Scala REPL 中的 Java 库,但不能使用脚本中的 Java 库?

    我正在开发一个使用 Joda Time 的 Scala 脚本 直到今天 这一切都运行良好 不知怎的 有些东西发生了变化 它不再起作用了 这有效 scala cp lib Welcome to Scala version 2 9 1 fina
  • 在 Play 2 模板中格式化双精度的正确方法是什么

    这是我的 Play 2 模板的缩写代码 variable com mypackage Variable div class statsbody div class statsform div div
  • 在 scala 中保留推导的更高类型

    我有一个高阶类型 并致力于用它构建一些 DSL 我正在寻找一种方法来定义可以接受类型而无需显式指定此类型的函数 自我描述示例 class Wrap T val data T class DSL def doSomething T x Wra
  • Scala:需要类类型,但找到了 T

    我发现了与此特定问题类似的问题 但是该问题是由于有人试图直接实例化 T 造成的 在这里 我试图创建一个特征 它是一个通用接口来扩展类并将它们自动存储在数据库中 例如 Riak 使用classOf T 使用 Scala 2 10 这是我的代码
  • Scala 条件列表构造

    我正在使用 Scala 2 9 2 并且想根据某些条件构建一个列表 考虑以下情况 其中 cond 是采用谓词 p 和类型 T 的值 在本例中为 t3 的某个函数 t1 t2 cond p t3 t4 我想要的行为如下 如果 p 为真 则应给
  • Scala:将整个列表的 Either 与每个元素的 Either 组合

    我有一个 Either 列表 它代表错误 type ErrorType List String type FailFast A Either ErrorType A import cats syntax either val l List
  • Scala REPL / SBT Console 是否有配置文件?

    我一直在尝试找到某种点文件来放入 Scala REPL 设置和自定义函数 我特别有兴趣传递它的标志 例如 Dscala color 启用语法突出显示 以及覆盖设置 如结果字符串截断 scala gt power scala gt vals

随机推荐

  • `数据 PoE a = 空 | 是否为空?配对 a` 一个单子?

    这个问题来自这个答案函子是 Applicative 但不是 Monad 的示例 https stackoverflow com a 49703783 412549 据称 data PoE a Empty Pair a a deriving
  • wpf中的HeaderedContentControl有什么用?

    我正在开发 WPF 但 UI 已本地化为古吉拉特语 在我的 window xaml 中 我有 2 行和 2 列 我无法使用 HeaderedContentControl 标签 代码在这里
  • 当子级管理调整大小时,如何强制布局更新/调整大小?

    我有一个习惯QTextEdit角落里有自己的调整大小手柄的小部件 我可以很好地调整文本小部件的大小 但是它内部的布局不会随着文本编辑大小的调整而改变 有没有一种方法可以告诉管理布局根据其小部件之一的大小的独立变化来重新计算自身 布局尊重si
  • 如何从父路由器或父路由器检查活动子路由器?

    如何检查子路由器是否活动 在角度4中显示状态真或假 现在我正在使用 角度 cli 1 4 4 节点 8 6 0 打字稿 2 3 4 角度 路由器 4 4 4 我的家长路线是 const routes Routes path componen
  • 在 Java 8 中以对象字段作为对象流中的键/值,优雅地创建映射

    我有以下课程 class Person public String name public int age public List
  • Magento 付款工作流程和已付款事件订单

    对于我的 Magento 模块之一 我需要捕获 任何订单都定义为已付款 事件 所以我发现关联的事件是sales order payment pay 好吧 似乎完全符合我的需求 我是一名 Magento 开发人员 而不是一名商人 目前 我从未
  • 如何检查我的 macOS 上是否安装了 adb?

    这是我尝试过的 Jaimes MacBook Pro platform tools jaimemontoya pwd Users jaimemontoya Library Android sdk platform tools Jaimes
  • R 中的预测 - GLMM

    当我们使用传统的逻辑回归并在 R 中进行预测时 例如 library dplyr n 300 xx lt c r1 r2 r3 r4 r5 xxx lt c e1 e2 e3 p 0 3 df1 lt data frame xx1 runi
  • roxygen2 包文档中的逐字输出

    我正在 RStudio 中使用 roxygen2 来生成包文档 如何强制 description 部分中的以下内容显示为逐字固定字体 SettingID Value RedItem Patient 10574 GreenItem Recor
  • 使用jq将json数组转换为jsonl格式

    我有这样的 json one 1 two 2 并希望将其转换为以下格式 one 1 two 2 以便于将其索引到 ElasticSearch 中 后者称为 jsonl 格式 JQ 是我最喜欢的工具 但我不知道如何做到这一点 谢谢 关键是 c
  • 两个div高度相等

    我有 2 个 div 每个 6 列 左侧的 div 中是图像 右侧的 div 中是一些引用 我希望右侧 div 的高度与图像的高度相同 这是我的代码 http codepen io matysflance pen PZXdBK http c
  • 如何查看jar文件的版本?

    我目前正在开发一个 J2ME 抛光应用程序 只是对其进行增强 我发现很难获取 jar 文件的确切版本 有没有办法找到类中完成的导入的 jar 文件的版本 我的意思是 如果你有一些东西 请导入 x y z 我们可以知道 x y 包所属的 ja
  • ASP.NET Web API 不允许使用冗长的 base64 URI

    我正在尝试从 Android 客户端接收冗长的 base64 字符串 然后将其解码为 Web API 项目中的位图 以将其作为图像上传到 Azure BLOB 存储 但是 该项目返回此消息并拒绝接受参数 请求 URL 太长 HTTP 错误
  • 将 H:M:S 字符转换为数字

    在文本文件中 我有一个包含字符值的字段 如下所示 00 01 53 910 该值实际上是以小时 分钟 秒为单位的时间 我想将其转换为数值 在此示例中 它应为 113 91 秒 尝试在 R 中使用此代码 我得到 1606287714 as n
  • 查询PrincipalSearcher是否包含多个字符串

    我希望能够查询活动目录 给出包含某些单词 例如用户或管理员 的所有组的列表 下面是我到目前为止所得到的 PrincipalContext ctx new PrincipalContext ContextType Domain GroupPr
  • Hibernate中嵌入成员的成员的独特约束

    是否可以在 Hibernate 中的嵌入式类的成员上定义唯一的约束 我需要确保 Nested i1 和 Nested i2 作为一对 组合 是唯一的 Entity Table uniqueConstrains public class Wi
  • 读取 R 中不同目录中最后创建/修改的文件

    我想读取最近在不同目录中修改 或创建 的 CSV 文件 然后将其放入预先存在的单个数据帧 df 总计 中 我有两种目录可供阅读 A LogIIS FOLDER01 files csv 在其他设备上有一个包含多个files csv的文件夹 如
  • Markdown:如何显示预览(比如前N个单词)

    我正在使用 Rails 4 和 Kramdown 但我相信这个问题可以扩展到任何支持 Markdown 的 网络 编程语言 我正在制作一个博客网站 在概述页面上 我想显示每篇文章的开头 由于文章可能很长 我只想展示第一部分 一个简单的想法是
  • 数据模板和泛型类型

    我有一个通用类 public abstract class BaseViewModel
  • Doobie 无法找到或构造类型 T 的 Read 实例

    我正在使用 doobie 查询一些数据 一切正常 如下所示 case class Usuario var documento String var nombre String var contrasena String def getUsu