流畅的 PostgreSQL 集成
Slick PostgreSQL Integration
我是 scala 的新手,我正在尝试将 PostgreSQL 数据库集成到用 scala.I 编写的 Lagom 应用程序中,我正在尝试利用 Lagom 的持久性 API。 Lagom 内置了对 slick 的支持。
我的table有3个字段id类型为int,name类型为string,data类型为jsonb
由于 Slick 不支持 json 格式,我正在尝试使用 slick-pg .
下面是我的实现
我的自定义配置文件class
import com.github.tminglei.slickpg.{ExPostgresProfile, PgPlayJsonSupport}
import play.api.libs.json.JsValue
import slick.basic.Capability
import slick.jdbc.{JdbcCapabilities, PostgresProfile}
trait CustomPostgresProfile 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 CustomPostgresProfile extends PostgresProfile
我的table定义
import com.custom.persistence.profile.CustomPostgresProfile.api._
import play.api.libs.json._
case class CustomDataEntity(id:int,name: String, data: JsValue)
object CustomDataTableDef {
val data = TableQuery[CustomDataTableDef]
}
class CustomDataTableDef(tag: Tag) extends Table[CustomDataEntity](tag, "custom"){
def id = column[Int]("id", O.PrimaryKey)
def name = column[String]("name")
def data = column[JsValue]("data")
override def * =
(id,name,data) <> (CustomDataEntity.tupled,CustomDataEntity.unapply(_))
}
当我尝试编译代码时,出现以下 2 个错误
could not find implicit value for parameter tt: slick.ast.TypedType[play.api.libs.json.JsValue]
[error] def data = column[JsValue]("data")
Cannot resolve symbol <>
请帮我解决这个问题
您的 object CustomPostgresProfile
扩展了 PostgresProfile
而不是 CustomPostgresProfile
。如果你解决了这个问题,它就会起作用。
我是 scala 的新手,我正在尝试将 PostgreSQL 数据库集成到用 scala.I 编写的 Lagom 应用程序中,我正在尝试利用 Lagom 的持久性 API。 Lagom 内置了对 slick 的支持。
我的table有3个字段id类型为int,name类型为string,data类型为jsonb
由于 Slick 不支持 json 格式,我正在尝试使用 slick-pg .
下面是我的实现
我的自定义配置文件class
import com.github.tminglei.slickpg.{ExPostgresProfile, PgPlayJsonSupport}
import play.api.libs.json.JsValue
import slick.basic.Capability
import slick.jdbc.{JdbcCapabilities, PostgresProfile}
trait CustomPostgresProfile 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 CustomPostgresProfile extends PostgresProfile
我的table定义
import com.custom.persistence.profile.CustomPostgresProfile.api._
import play.api.libs.json._
case class CustomDataEntity(id:int,name: String, data: JsValue)
object CustomDataTableDef {
val data = TableQuery[CustomDataTableDef]
}
class CustomDataTableDef(tag: Tag) extends Table[CustomDataEntity](tag, "custom"){
def id = column[Int]("id", O.PrimaryKey)
def name = column[String]("name")
def data = column[JsValue]("data")
override def * =
(id,name,data) <> (CustomDataEntity.tupled,CustomDataEntity.unapply(_))
}
当我尝试编译代码时,出现以下 2 个错误
could not find implicit value for parameter tt: slick.ast.TypedType[play.api.libs.json.JsValue]
[error] def data = column[JsValue]("data")
Cannot resolve symbol <>
请帮我解决这个问题
您的 object CustomPostgresProfile
扩展了 PostgresProfile
而不是 CustomPostgresProfile
。如果你解决了这个问题,它就会起作用。