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数组来接收
}