当前位置: 首页 > 知识库问答 >
问题:

用slick、scala处理Postgres json数据类型

云光明
2023-03-14

我的模式中有一个Postgres'json'列。这是我代码中的列映射:

def my_col = column[Option[String]]("my_col")

这不起作用,插入时得到的堆栈跟踪显示:

我也试过:

def my_col = column[Option[String]]("my_col", O.SqlType("json"))

也会产生同样的错误。

共有1个答案

水麒
2023-03-14

因此,我发现slick-pg解决方案是实现此功能的更好方法。如果您所需要的只是代码中的JSON支持,即在使用Postgres的JSON列类型时,您只需要将一个DB列表示为PlayJSValue,那么您只需要编写一个配置文件,该配置文件混合了slick-pg包中的适当功能。

libraryDependencies += "com.github.tminglei" %% "slick-pg" % "0.18.0"
libraryDependencies += "com.github.tminglei" %% "slick-pg_play-json" % "0.18.0"
import com.github.tminglei.slickpg._
import slick.basic.Capability
import slick.jdbc.JdbcCapabilities

trait PostgresProfile extends ExPostgresProfile with PgPlayJsonSupport {
  def pgjson = "jsonb"

  override protected def computeCapabilities: Set[Capability] =
    super.computeCapabilities + JdbcCapabilities.insertOrUpdate

  override val api = PostgresJsonSupportAPI

  object PostgresJsonSupportAPI extends API with JsonImplicits
}

object PostgresProfile extends PostgresProfile

因此,您将需要扩展HasDatabaseConfigProvider,但使用在上面第2步中定义的特征对其进行参数化,例如。

class MyEntityRepository @Inject() (
  protected val dbConfigProvider: DatabaseConfigProvider
  ... // plus whatever other components you need, probably an ExecutionContext
) extends HasDatabaseConfigProvider[PostgresProfile] {

  import PostgresProfile.api._
...
}

这是容易的部分。在上面的类中,MyEntityRepository编写一个扩展Table的私有或包私有光滑类,并简单地定义如下所示的列:

def someColumnName = column[JsValue]("some_column_name")

就这样!

 类似资料:
  • Slick 是 TypeSafe 推出的 Scala 数据库访问库。开发者可以使用 Scala 语言风格来编写数据查询,而不是用 SQL,示例代码: object Coffees extends Table[(String, Int, Double)]("COFFEES") { def name = column[String]("COF_NAME", O.PrimaryKey) def su

  • 我有一个特定的要求,其中,我需要检查空的数据文件。如果为空,则填充默认值。这是我尝试过但没有得到我想要的东西。 这个想法是,如果df不是空的,就得到它。如果为空,则填写默认值为零。这似乎不起作用。以下是我得到的。 请帮忙。

  • 我试图在Spark中创建成批的行。为了保持发送到服务的记录数量,我想对项目进行批处理,这样我就可以保持数据发送的速率。对于, 对于给定的我想创建 例如,如果输入有100条记录,那么输出应该像一样,其中每个应该是记录(Person)的列表。 我试过了,但没用。 我想在Hadoop集群上运行此作业。有人能帮我吗?

  • 主要内容:实例Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型: 数据类型 描述 Byte 8位有符号补码整数。数值区间为 -128 到 127 Short 16位有符号补码整数。数值区间为 -32768 到 32767 Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 Long 64位有符号补码整数。数值区间为 -9223372036

  • Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型: 数据类型 描述 Byte 8位有符号补码整数。数值区间为 -128 到 127 Short 16位有符号补码整数。数值区间为 -32768 到 32767 Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 Long 64位有符号补码整数。数值区间为 -9223372036

  • 我正在尝试在postgress列中插入json,这是json 但是在光滑的一代中,它产生了如下的结果: val taskvariables:rep[option[String]]=column[option[String]](“taskvariables”,o.length(2147483647,varying=false),o.default(None)) 为了插入它,我编写了如下代码: 它在插