java - hibernate6抛出异常 'scale has no meaning for floating point numbers'

标签 java spring-boot hibernate

之前我用的是hibernate 5.x一切正常。

将 hibernate 更新到 6.1.7 后,项目出现异常。

我正在使用 springboot 3.0.5 并添加以下属性以在 mysql 8.0 上自动生成表:

spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

我的实体如下:

@Data
@Entity
@Table(name = "T_TEST")
public class TPriceRange implements Serializable {
    @Id
    @Column(name = "ID", unique = true, nullable = false)
    private Integer id;

    @Column(name = "price", precision = 5, scale = 2)
    private Double price;
}

当我启动项目时,异常(exception)是:

Caused by: org.hibernate.MappingException: Unable to determine SQL type name for column 'price' of table 't_test'
    at org.hibernate.mapping.Column.getSqlTypeName(Column.java:252)
    at org.hibernate.mapping.Column.getSqlType(Column.java:314)
    at org.hibernate.tool.schema.internal.StandardTableExporter.getSqlCreateStrings(StandardTableExporter.java:99)
    ... 179 common frames omitted
Caused by: java.lang.IllegalArgumentException: scale has no meaning for floating point numbers
    at org.hibernate.dialect.Dialect$SizeStrategyImpl.resolveSize(Dialect.java:3853)
    at org.hibernate.dialect.MySQLDialect$1.resolveSize(MySQLDialect.java:108)
    at org.hibernate.mapping.Column.getColumnSize(Column.java:358)
    at org.hibernate.mapping.Column.getSqlTypeName(Column.java:248)

好像‘刻度’不能用,不知道为什么?

有人可以帮助我吗?

非常感谢!

hibernate6标度对于 float 没有意义

最佳答案

嗯,我的意思是,这个异常(exception)应该是不言自明的。

浮点类型没有刻度(这就是“浮点”的确切字面含义),因此这种映射不合理:

@Column(name = "price", precision = 5, scale = 2)
private Double price;

因此只需删除文本 scale = 2 即可。

如果您希望该货币值具有设定的精度和小数位数,则应使用 BigDecimal 而不是 Double,并将其映射到 SQL 类型 DECIMAL (5,2)NUMERIC(5,2)。 只需删除文本 scale=2 即可。例如:

@Column(name = "price", precision = 5, scale = 2)
private BigDecimal price;

关于java - hibernate6抛出异常 'scale has no meaning for floating point numbers',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75862838/

相关文章:

java - Spring "magically"如何知道要使用哪种 Bean 类型?

java - 创建了两个 conversionService bean

java - 在Spring Boot中使用YAML文件配置SMTP主机

java - JSP 中的 JSON 和 Jquery 树

java - JPA是否足以执行CRUD操作

java - Spring Boot - JSON 对象数组到 Java 数组

java - Springboot data-jpa findByDate()

java - Hibernate:使用集中的属性值创建 HQL 查询

java - @Embeddables 的 @ElementCollection 每个都有 @Embeddable 字段会导致 "Could not find a setter"异常

java - Android ArrayIndexOutOfBoundsException 错误长度=12;索引=-1