postgresql数据库数组(Integer)类型避坑

 

前提:业务需要把时间戳(秒)数组,存到一个字段,存入后的数据结构:{1659283200,1661961600}

entity类配置 

@Data
@TableName("a")
public class DispSocBill extends BaseEntityPO {

private static final long serialVersionUID = 1L;

@TableId(value = "id", type = IdType.ID_WORKER_STR)
private String id;

@ApiModelProperty(value = "费用所属月")
@TableField(value = "belong_months",typeHandler = ArrayTypeHandler.class)
private Object[] belongMonths;
}

DTO配置

@Data
public class DTO {
@ApiModelProperty(value = "费用所属月")
private Integer[] belongMonths;        
  //这里只能用Integer数组,用Long数组保存时会报错,提示类型不匹配,数据库类型 int4[],int8[]都可以
  报错信息,column "belong_months" is of type integer[] but expression is of type character varying[]
  网上搜索说在yml配置文件里 数据链接需要加上一个参数,我的项目没有,不知道能不能解决这个问题,下面这个红色参数意思是让pg数据库自动匹配字段类型
  url: jdbc:postgresql://192.168.0.234:5432/db_test?stringtype=unspecified
  username: postgres
  password: 123
  driver-class-name: org.postgresql.Driver
}

入参用Integer数组比较方便,后续不用转换,假如用List<Long>作为入参,
在entity.setBelongMonths();会麻烦一点,直接用最原始的办法转成Integer[]吧,toArray方法是个坑,用不了
VO配置
@Data
public class SocBillPageVO {
private Object[] belongMonths;    //这里只能用Object数组来接收

}
 
posted @ 2022-11-04 14:16  闭眼的鱼  阅读(966)  评论(0编辑  收藏  举报