如何在 postgres 中使用 Java 插入 json 文档

Posted

技术标签:

【中文标题】如何在 postgres 中使用 Java 插入 json 文档【英文标题】:How to insert json document using Java in postgres 【发布时间】:2021-09-18 01:53:10 【问题描述】:

我有一个 postgres 数据库 -

CREATE TABLE IF NOT EXISTS records (
   "value" jsonb,
   "tags" jsonb
);

我应该如何定义我的类 - 让 json 文档进入 value 和 tags 列?

@Entity
@Table(name = "records")

public class RecordEntity implements Serializable 

    private String value;      

    private String tags;


我应该为 value 和 tags 赋予什么注释或数据类型 - 这样一个 json 文档进入 postgres 表。

【问题讨论】:

如果答案对您有帮助或者您正在寻找什么,请告诉我? 【参考方案1】:

您可以使用 hibernate-types 库将 String JPA 属性映射到 JSON 数据库列。 hibernate-types 框架非常灵活,允许您使用 String JPA 属性类型来表示 JSON 结构。

@Entity(name= "RecordEntity")
@Table(name = "records")
@TypeDef(
        name ="json",
        typeClass = JsonType.class
)
public class RecordEntity implements Serializable 
    @Type(type = "json")
    @Column(columnDefinition = "jsonb")
    private String value;
    @Type(type = "json")
    @Column(columnDefinition = "jsonb")
    private String tags;

要使用休眠类型,请添加以下依赖项:

<dependency>
    <groupId>com.vladmihalcea</groupId>
    <artifactId>hibernate-types-55</artifactId>
    <version>$hibernate-types.version</version>
</dependency>

更多细节可以在这篇文章中找到:How to map a String JPA property to a JSON column using Hibernate

【讨论】:

虽然参考资料可能有答案,但在此处添加答案的内容并稍后再参考以更清楚起见总是有帮助的。 当然,有道理。我会这样做的。 嗨@FelixKJose,它给出以下错误:-错误:列“值”是json类型,但表达式是bytea类型 哦,我没有注意到您的类型只是json,我提供了jsonb 类型的示例。我已经更新了例子,修改的只是@Column(columnDefinition = "jsonb")@Column(columnDefinition = "json") @HarshMultani 如果有帮助请告诉我。

以上是关于如何在 postgres 中使用 Java 插入 json 文档的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Prisma 为 Postgres 进行 SQL 插入,条件是行数?

SQL 在 Postgres 中插入 file.exe

带有Java的Postgres我无法插入数据

如何在 postgres 中插入货币数据类型值

Postgres 9.6 如何遍历数组并将每个数组值插入表中?

如何通过 python 将 current_timestamp 插入 Postgres