J'ai joué avec Play et j'ai rencontré un problème en essayant d'enregistrer des données d'exemple dans PostrgeSQL.Persist UUID dans PostgreSQL à l'aide de Play Slick - java.sql.BatchUpdateException
Je suis conscient que je peux convertir UUID en chaîne et l'enregistrer de cette façon, mais je ne peux pas le faire fonctionner avec UUID.
L'erreur que je reçois:
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
Mes dépendances:
libraryDependencies += "org.postgresql" % "postgresql" % "42.1.4"
libraryDependencies += "com.typesafe.play" %% "play-slick" % "3.0.1"
classe affaire Société:
case class Company(id: UUID = UUID.randomUUID, name: String)
définition de la table Slick:
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")
}
Dans les journaux, j'ai remarqué que UUID est converti en effet en octets:
[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 - | [[email protected] | Amazon |
[debug] s.j.J.parameter - | [[email protected] | Google |
[debug] s.j.J.parameter - | [[email protected] | Microsoft |
[debug] s.j.J.parameter - \-------------+-----------/
J'apprécierais vraiment de l'aide ou des conseils.
Avez-vous importé le pilote pour Postgres? 'import dbConfig.profile.api._' – Dexmo
Quel oubli de ma part! Auparavant, je bidouillais avec H2 donc j'ai importé 'import slick.jdbc.H2Profile.api._' au lieu de PostgresProfile, le compilateur ne s'est pas plaint et je l'ai oublié. Merci! –