gpt4 book ai didi

postgresql - 使用 Play Slick 在 PostgreSQL 中保留 UUID - java.sql.BatchUpdateException

转载 作者:行者123 更新时间:2023-11-29 13:18:30 25 4
gpt4 key购买 nike

我一直在玩 Play,在尝试将一些示例数据保存到 PostrgeSQL 中时遇到了问题。

我知道我可以将 UUID 转换为字符串并以这种方式保存它,但我无法让它与 UUID 一起使用。

我得到的错误:

Error injecting constructor, java.sql.BatchUpdateException: Batch entry 0 insert into "COMPANIES" ("ID","NAME") values (?,'Amazon') was aborted: ERROR: column "ID" is of type uuid but expression is of type bytea

我的依赖项:

libraryDependencies += "org.postgresql" % "postgresql" % "42.1.4"
libraryDependencies += "com.typesafe.play" %% "play-slick" % "3.0.1"

公司案例类:

case class Company(id: UUID = UUID.randomUUID, name: String)

光滑的表格定义:

val companies: TableQuery[Companies] = TableQuery[Companies]

class Companies(tag: Tag) extends Table[Company](tag, "COMPANIES") {
override def * : ProvenShape[Company] = (id, name) <> (Company.tupled, Company.unapply)

def id: Rep[UUID] = column[UUID]("ID", O.PrimaryKey, O.SqlType("UUID"))
def name: Rep[String] = column[String]("NAME")
}

在日志中我注意到 UUID 确实被转换为字节:

[debug] s.j.J.statement - Preparing statement: insert into "COMPANIES" ("ID","NAME")  values (?,?)
[debug] s.j.J.parameter - /-------------+-----------\
[debug] s.j.J.parameter - | 1 | 2 |
[debug] s.j.J.parameter - | Bytes | String |
[debug] s.j.J.parameter - |-------------+-----------|
[debug] s.j.J.parameter - | [B@17c2de51 | Amazon |
[debug] s.j.J.parameter - | [B@6a4e93d5 | Google |
[debug] s.j.J.parameter - | [B@69f81ed7 | Microsoft |
[debug] s.j.J.parameter - \-------------+-----------/

我非常感谢您的帮助或提示。

最佳答案

您必须为您的数据库系统导入特定的配置文件。在你的情况下:

import slick.jdbc.PostgresProfile.api._

虽然我建议注入(inject)配置提供程序,然后导入该 api。这样,如果您配置另一个数据库管理系统,您的代码将正常工作。

class DAO @Inject()(@NamedDatabase("DB_NAME_FROM_CONFIG") protected val dbConfigProvider: DatabaseConfigProvider)
(implicit ec: ExecutionContext) {
import profile.api._

...
}

关于postgresql - 使用 Play Slick 在 PostgreSQL 中保留 UUID - java.sql.BatchUpdateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45683771/

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