gpt4 book ai didi

json - 将 PostgreSQL JSON 类型与 Slick 2 代码生成器一起使用

转载 作者:行者123 更新时间:2023-11-29 11:28:57 26 4
gpt4 key购买 nike

我正在使用 Slick 2 code generator在我的 Scala/Play 应用程序中生成我的 PostgreSQL 数据库的表类。虽然有些字段是 JSON 类型,但它们会被生成器转换为字符串。我想知道我是否可以以某种方式使用 slick-pg plugin让生成器识别 Postgres JSON 类型?

我试图在 Build.scala 中直接扩展 slick.driver.PostgresDriver:

import slick.driver.PostgresDriver
import com.github.tminglei.slickpg._

trait MyPostgresDriver extends PostgresDriver
with PgArraySupport
with PgDateSupport
with PgRangeSupport
with PgHStoreSupport
with PgPlayJsonSupport
with PgSearchSupport
with PgPostGISSupport {

override val Implicit = new ImplicitsPlus {}
override val simple = new SimpleQLPlus {}

trait ImplicitsPlus extends Implicits
with ArrayImplicits
with DateTimeImplicits
with RangeImplicits
with HStoreImplicits
with JsonImplicits
with SearchImplicits
with PostGISImplicits

trait SimpleQLPlus extends SimpleQL
with ImplicitsPlus
with SearchAssistants
with PostGISAssistants
}

object MyPostgresDriver extends MyPostgresDriver

但我不知道如何将它与代码生成器例程而不是标准驱动程序一起使用:

SourceCodeGenerator.main(
Array(
"scala.slick.driver.PostgresDriver", //how do I use MyPostgresDriver here?
"org.postgresql.Driver",
"jdbc:postgresql://localhost:5432/db?user=root&password=root",
"app",
"db"
)
)

最佳答案

你不能让生成器以这种方式获取类型。它(或者更确切地说,从数据库模式对模型进行逆向工程的 Slick 代码)目前只检测到一大堆类型,并简单地为所有其他类型假设 String。将来会改进这一点。为了使其对列使用不同的类型,您必须自定义生成器。相应的 Slick 文档示例实际上展示了如何自定义类型:

http://slick.typesafe.com/doc/2.0.0/code-generation.html#customization

关于json - 将 PostgreSQL JSON 类型与 Slick 2 代码生成器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22442483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com