Postman POST请求500错误排查及数据库字段类型适配咨询
解决PostgreSQL bytea字段与Hibernate实体类型不匹配问题
根据错误提示column "image" is of type bytea but expression is of type smallint,核心问题是实体类字段类型与数据库字段类型不兼容:
- 数据库中
image字段为bytea类型(PostgreSQL用于存储二进制字节流的类型) - 当前实体类里声明的
Byte image;是单个字节类型,Hibernate会将其映射为SQL的smallint类型,与bytea类型无法匹配
解决方案
将实体类中的Byte类型改为byte[](字节数组),这是Hibernate映射PostgreSQL bytea字段的标准适配类型:
修改后的Entity类代码:
@Data @NoArgsConstructor @Table(name = "student_personal_information") @Entity public class PersonalEntity { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) @Column(name = "id", nullable = false) private Long id; @Column(name = "lastname", columnDefinition = "CLOB") private String lastname; @Column(name = "firstname", columnDefinition = "CLOB") private String firstname; @Column(name = "middleinitial") private String middleinitial; @Column(name = "age") private Integer age; // 修改为byte[]类型,匹配数据库bytea字段 @Column(name = "image") private byte[] image; }
补充说明
如果需要更复杂的二进制数据操作,也可以使用javax.persistence.Blob类型,但byte[]是更轻量、通用的选择,适合存储图片这类二进制数据。
内容的提问来源于stack exchange,提问作者Practice Tech
相关产品推荐
相关产品推荐

