Spring JPA实体List<String>映射PostgreSQL数组不生效报错如何解决?
问题原因
Hibernate默认无法直接映射java.util.List类型的基础类型集合字段,需要通过专门的注解声明集合映射规则。
解决方案
给favFoods字段添加@ElementCollection注解即可解决问题,修改后的实体类如下:
@Entity @Data public class Cat { @Id private String catId; private String catName; @ElementCollection private List<String> favFoods; }
如果需要自定义存储集合数据的关联表配置,可搭配@CollectionTable注解使用:
@ElementCollection // 自定义关联表名、外键字段名 @CollectionTable(name = "cat_favorite_foods", joinColumns = @JoinColumn(name = "cat_id")) // 自定义存储食物名称的字段名 @Column(name = "food_name") private List<String> favFoods;
配置后Hibernate会自动生成主表cat和关联表cat_favorite_foods,通过外键关联存储集合数据,无需额外手动建表。
内容的提问来源于stack exchange,提问作者Linus
相关产品推荐
相关产品推荐

