首页 > 解决方案 > JPA实体字段中多维数组的正确注释是什么

问题描述

映射到 postgres 中 text[] 类型数据的实体字段的正确注释是什么?

在 Postgres db 表中,我有一列类型为 text[]。我在哪里存储数据,例如:{{00:00:05,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {00:00:10,-,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}

我的实体类看起来像:

@Entity
@Data
@Table(name = "spiroergometry")
public class Spiroergonometry {
  @Id
  @Column(name="id")
  private Long id;
  @Column(name="first_name")
  private String firstName;
  @Column(name="last_name")
  private String lastName;
  @Column(name="height")
  private double height;
  @Column(name="weight")
  private double weight;
  @Column(name="t_start")
  private Date tStart;
  @Column(name="t_end")
  private Date tEnd;
  @Column(name="temperature")
  private double temperature;
  @Column(name="protocol")
  private String  protocol;
  @Column(name="bd_date")
  private Date bdDate;

  @?????????
  private List<SpiroRawData> rawData;




class SpiroRawData {
    private String time;
    private String wr;
    private double vo2STPD;
    private double vo2;
    private double co2STPD;
    private double veBTPS;
    private double rer;
    private String wrTM;
    private double chD;
    private double veVO2;
    private double veVCO2;
    private String v;
    private double cho;
    private double fat;
    private double petO2;
    private double petCO2;
    private double sv;
}

标签: javahibernatejpa

解决方案


您无法将您的映射List<SpiroRawData>到,text[]因为SpiroRawData它是一种具有自己属性的类型。

您可以@ElementCollection改为使用 JPA 将其映射到单独的表。

@ElementCollection
@CollectionTable(joinColumns = @JoinColumn(name = "spiroergonometry_id"))
private List<SpiroRawData> rawData;

@Embeddable
public class SpiroRawData {...}

推荐阅读