You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data JPA用@ElementCollection时Postgres中Double被转整数如何解决

解决方法如下:

  • 显式指定集合字段的数据库类型
    修改你实体类中values字段的注解配置,通过columnDefinition直接声明PostgreSQL对应的浮点类型:
@ElementCollection(targetClass = Double.class)
@CollectionTable(name = "mts_values_values", joinColumns = @JoinColumn(name = "mts_value_id"))
@Column(name = "value", columnDefinition = "double precision not null")
private List<Double> values;

@CollectionTable可以显式指定自动生成的副表的外键关联规则,避免JPA自动生成的字段规则出错;columnDefinition会强制使用你指定的类型生成表字段,跳过默认的自动映射逻辑,同时避免values作为SQL关键字可能引发的异常。

  • 校验PostgreSQL方言配置
    检查项目配置文件中的JPA方言配置,确认使用PostgreSQL专属方言,避免方言匹配错误导致的类型映射异常:
# application.properties 配置示例
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
# application.yml 配置示例
spring:
  jpa:
    database-platform: org.hibernate.dialect.PostgreSQLDialect
  • 重新生成表结构
    如果之前已经生成过整数类型的副表,JPA默认的update模式不会修改已存在字段的类型,你需要手动删除旧的副表,或者在开发环境将spring.jpa.hibernate.ddl-auto调整为create后重启项目,让JPA重新生成符合配置的表结构。

内容的提问来源于stack exchange,提问作者LeBraveLittleToaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:57:00