我想使用此查询选择最大值(表中的所有字段都不为空(:
dc.run(quote {
query[SchemaInfo]
.filter(_.subjectName == lift(subject))
.map(_.version)
.max
}).map(_.map(_ + 1).getOrElse(1))
我知道,那张表可能是空的,所以我用这个:map(_.map(_ + 1).getOrElse(1))
.
问题是此查询会产生此错误:
SQL
NULL
在第 1 列读取(JDBC 类型空(,但映射到 非选项类型;在此处使用选项。请注意,JDBC 列索引是 基于 1。 doobie.util.invariant$NonNullableColumnRead: SQLNULL
read 在第 1 列(JDBC 类型空(,但映射到非选项类型;用 在这里选择。请注意,JDBC 列索引是从 1 开始的。
如何解决? 没有羽毛笔(使用纯 doobie(,相同的查询正常工作
我知道您可能已经得到了答案,但我会在这里留下我的评论,以便将来对某人有所帮助。
所以问题就来了query[SchemaInfo]
由于记录可能不存在,因此应将其映射到query[Option[SchemaInfo]].unique