【问题标题】:How to insert json document using Java in postgres如何在 postgres 中使用 Java 插入 json 文档
【发布时间】: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 表。

【问题讨论】:

  • 如果答案对您有帮助或者您正在寻找什么,请告诉我?

标签: java json postgresql spring-boot model-view-controller


【解决方案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 如果有帮助请告诉我。
猜你喜欢
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多