使用值类字段的实体的Doobie查询

我正在使用Doobie来管理数据库持久性。在我的实体中使用值类字段,Foo

    case class CreatedOn(value: LocalDateTime) extends AnyVal
    case class Resource(value: String) extends AnyVal
    case class Foo(id: Option[Int], resource: Resource, createdOn: CreatedOn)

    implicit fooRead: Read[Foo] = Read[(Option[Int], String, LocalDateTime)].map {
        case (oid, resource, createdOn) => Foo(oid, Resource(resource), CreatedOn(createdOn))
    }

    implicit fooWrite: Write[Foo] = Write[(Option[Int], String, LocalDateTime)].contramap {e => (e.oid, e.resource.value, e.createdOn.value}

但是编译器抱怨缺少Read[(Int, String, LocalDateTime)].map {...有关如何解决此问题的任何建议?首先,使用价值类是个坏主意吗?谢谢

马特乌斯·库布佐克(Mateusz Kubuszok)

Doobie能够将查询读入case classes。如果您将案例类想象为元组,并且可以将它们展平,那么这就是Doobie在将事物查询到案例类中时所做的事情。

Foo(Some(1), Resource("test"), CreatedOn(time))
(Some(1), Tuple1("test"), Tuple1(time))
(Some(1), "test", time) // (Option[Int], String, LocalDateTime)

如果推导失败,则可以检查以下哪个字段:

sql"".query[Int]
sql"".query[String]
sql"".query[LocalDateTime]

编译失败的行会告诉您缺少的实例。

根据我的经验,这是时间实例。您必须分别导入它们,而您可能没有导入

doobie.implicits.javatime._

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

学说(联合)类表继承中的根实体的查询字段

如何将原始查询字段映射到实体的类字段?

Spring Boot JPA使用查询填充实体字段

无法在实体框架的查询中使用枚举字段

EFCore:根据相关实体中字段的最大值查询相关实体

根据另一个联接的实体字段值查询一个实体

在深层类/实体中使用 linq by 字段按集合排序

使用非实体类作为原生查询的结果类

使用updatable = false的实体中的Update字段将返回具有新值的字段的实体

使用类字段在 xaml 中设置值

类图的实体属性查询

使用 Doobie 在单个事务中进行多个查询?

使实体框架(使用Linq查询)使用自定义字段的别名,而不是重做子查询

迁移查询未使用默认值创建JPA实体

如何使用CriteriaQuery向OneToOne实体查询特定值

使用多个多个“哪里”值查询Firestore字段/值?

如何在symfony实体类中设置某些字段的值

JPA:查询以基于实体类中定义的外键的值获取结果?

实体框架查询逗号分隔的字段

向实体框架查询添加新字段

如何使用我使用实体框架创建的自动生成的类查询一对多关系?

如何在具有动态查询的实体中使用联接字段查找数据

如何使用休眠查询仅获取具有关联的实体的某些字段?

Solr可以在查询中使用已知文档的字段值吗?

使用 INSERT INTO 和子查询 SELECT 插入字段的先前值

使用其他查询检索更改了字段值的文档

Django使用字段值查找过滤查询集

如何在PostgreSQL中使用递归查询连接字段值?

如何使用jOOQ的动态查询按字段值实现订单