微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 Postgres 中的文本数组映射到 Scala Slick

如何解决如何将 Postgres 中的文本数组映射到 Scala Slick

我的 postgres 表中有以下列:

ALTER TABLE my_table
    ALTER COLUMN test_field TYPE text ARRAY USING test_field::text ARRAY

当我直接从我的 postgres 表中重新生成 Slick 模式时,我有以下内容"

*  @param test_field Database column test_field sqlType(_text),Length(2147483647,false),Default(None) */

  case class MyTable(id: java.util.UUID,created: Option[java.sql.Timestamp] = None,test_field: Option[String] = None)

  /** GetResult implicit for fetching MyTable objects using plain sql queries */

  implicit def GetResultTable(implicit e0: GR[java.util.UUID],e1: GR[Option[java.sql.Timestamp]],e2: GR[String] = GR{
    prs => import prs._
    MyTable(<<[java.util.UUID],<<?[java.sql.Timestamp],<<?[String])
  }

我不确定为什么该字段不被识别为 Option[Array[String]] ,我哪里出错了?

谢谢

解决方法

我使用了 slick-pg 并创建了我自己的 MyPostgresProfile,详见项目自述文件。事实证明,Slick 在 Postgres 中处理 text[] 时存在问题,尽管 slick-pg 确实支持数组:

[https://github.com/tminglei/slick-pg/tree/master/core/src/main/scala/com/github/tminglei/slickpg/array][1]

生成表时,这样的数组实际上被看作是一个Seq

我最终将 Postgres 中的数据类型从 Array 更改为 jsonb,插件使用 JValue 对其进行了精美的处理。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。