首页 > 解决方案 > 如何使用 JSONB PostgreSQL 通过 JSON 插入列?

问题描述

我有一个实体,它映射到 PostgreSQL,我想使用 JSONB 能够通过 JSON 插入列。

@Entity
@Table(name="TB_ORDEM_MANUTENCAO")
@TypeDef(
        name = "jsonb",
        typeClass = JsonBinaryType.class
)
public class OrdemManutencao implements Serializable {
private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO) // Cria automaticamente os ids
    private long id;

    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
    private Date dataManutencao;    

    @OneToOne
    @JoinColumn(name = "equipamento_id", unique = true)
    private Equipamento equipamento;

    @Type(type = "jsonb")
    @Column(columnDefinition = "jsonb")
    private String propriedades;            

}

在 Swagger 中,我尝试按如下方式添加维护订单:

{
  "propriedades" : [{"uf": "MG", "teste": "teste"}],
  "dataManutencao": "2020-04-04",
  "equipamento": {
    "id": 13,
    "nome": "Lavadoura",
    "quantidade": 1
  }
}

这不会在我的 order_maintenance 表中插入列,只需像这样插入:

Response body
{
  "id": 27,
  "dataManutencao": "2020-04-04",
  "equipamento": {
    "id": 13,
    "nome": "Lavadoura",
    "quantidade": 1
  }
}

我怎样才能做到这一点?

标签: javapostgresqlspring-bootjpajsonb

解决方案


这解决了我:vladmihalcea.com/map-string-jpa-property-json-column-hibernate。


推荐阅读