我将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
}