【问题标题】:How do I represent postgres `bytea` type in slick 2.0.1?如何在 slick 2.0.1 中表示 postgres `bytea` 类型?
【发布时间】:2014-04-07 14:03:43
【问题描述】:

在 slick 的文档中,据说 java.sql.Blob 是开箱即用支持的类型之一,我试图用它来表示 bytea 列。但是下面的代码给了我一个错误:

import scala.slick.driver.PostgresDriver.simple._
import java.sql.{ Timestamp, Blob }

case class Test(id: Int, last_updated: Timestamp, data: Blob)

class Tests(tag: Tag) extends Table[Test](tag, "tests") {
  def data = column[Blob]("data")
  def last_updated = column[Timestamp]("last_updated")
  def id = column[Int]("id", O.PrimaryKey)
  def * = (id, last_updated, data)
}

错误信息是:

Multiple markers at this line
    - No matching Shape found. Slick does not know how to map the given types. Possible causes: T in Table[T] does not match your * projection. Or you use an unsupported 
     type in a Query (e.g. scala List). Required level: scala.slick.lifted.ShapeLevel.Flat Source type: (scala.slick.lifted.Column[Int], scala.slick.lifted.Column[java.sql.Timestamp], 
     scala.slick.lifted.Column[java.sql.Blob]) Unpacked type: utils.Test Packed type: Any
    - implements scala.slick.lifted.AbstractTable.$times
    - type mismatch; found : (scala.slick.lifted.Column[Int], scala.slick.lifted.Column[java.sql.Timestamp], scala.slick.lifted.Column[java.sql.Blob]) required: 
     scala.slick.lifted.ProvenShape[utils.Test]
    - type mismatch; found : (scala.slick.lifted.Column[Int], scala.slick.lifted.Column[java.sql.Timestamp], scala.slick.lifted.Column[java.sql.Blob]) required: 
     scala.slick.lifted.ProvenShape[utils.Test]

发生了什么,我怎样才能在 slick 中正确地表示 bytea

【问题讨论】:

    标签: postgresql scala blob slick bytea


    【解决方案1】:

    该问题与Blob 支持无关。正如错误消息所暗示的最常见原因,“Table[T] 中的 T 与您的 * 投影不匹配”。应该是def * = (id, last_updated, data) <> (Test.tupled, Test.unapply _)

    请注意,这仍然不适用于bytea。 Slick 的 PostgreSQL 驱动程序将 Blob 映射到来自 PotgreSQL 的“lo”扩展的 blob 类型。您需要将Array[Byte] 用于bytea

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-25
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多