Kotlin,Postgres:如何将Map <string,any =“”>的属性存储到JSONB?

时间:2019-03-08 23:58:37

标签: java postgresql kotlin

我已经浏览了一些类似的问题,但是找不到我想要的东西。我正在尝试将实质上具有这种格式的对象存储到postgres表中:

FROM tomcat:8.0

ADD ./webapp/target/*.war /usr/local/tomcat/webapps/

EXPOSE 8080

CMD ["catalina.sh", "run"]

我要做的就是编写这些对象并将它们读取到表中,并且还需要对其中一个属性进行过滤。经过一番研究,看起来JSONB可能是一种很好的格式,所以我创建了一个表,如:

class C {
    var id: Int? = null
    var name: String? = null
    var attributes: Map<String, Any> = mapOf()
}

不确定如何将Map转换为可以写入数据库的对象。现在,我的映射器看起来像这样:

CREATE TABLE IF NOT EXISTS fake_table (

    id INTEGER NOT NULL,
    name TEXT NOT NULL,
    attributes JSONB NOT NULL,
    PRIMARY KEY (id)
);

我只需要将C类转换成兼容的Item类?

interface ItemMapper {
    @Insert("""
    INSERT INTO fake_table (
        id, name, attributes
    ) VALUES (
        #{id}, #{name}, #{attributes}
    )""")
    fun add(item: Item)
}

我能够通过将属性转换为String来使它正常工作,但是后来我无法轻松过滤查询(我相信吗?),这是一个大问题。

0 个答案:

没有答案