我将postgresql 9.5与jdbc驱动程序9.4.1208.jre7和scalikejdbc包装一起使用
我的桌子是:

CREATE TABLE refs
(
  name character varying NOT NULL,
  custom json,
  prices integer[]
)

我可以使用org.postgresql.util.PGobject插入json值:
val res = new PGobject()
res.setType("json")
res.setValue("{'name': 'test'}")
res

我还想插入数组。我该怎么做?我想这会管用的:
  def toArrStr(a: Iterable[String]): PGobject = {
    val res = new PGobject()
    res.setType("ARRAY")
    res.setValue(s"{${a.map(i => '"' + i + '"').mkString(",")}}")
    res
  }

但它给了我例外:org.postgresql.util.PSQLException: Unknown type ARRAY
可能是我缺少smth,但找不到关于PGObject类的好文档。我认为PGObject类完全是为和我一样的目的而设计的,但它的行为并不像预期的那样
POSTGRES有很多类型,不仅有数组,还有date、datetime、daterange、timestamprange等等。我认为应该有相应类型的类型名。

最佳答案

我知道如何使用PGObject保存字符列表[]

  def toArrStr(a: Iterable[String]): PGobject = {
    val res = new PGobject()
    res.setType("varchar[]")
    res.setValue(s"{${a.map(i => '"' + i + '"').mkString(",")}}")
    res
  }

要保存数字数组,请执行以下操作:
其中大小为2,4,8(smallint,int,bigint)
  def toArrNum(a: Iterable[AnyVal], size: Int): PGobject = {
    val res = new PGobject()
    res.setType(s"int$size[]")
    res.setValue(s"{${a.mkString(",")}}")
    res
  }

08-07 23:30