gpt4 book ai didi

mysql - 在 MySQL 中存储 Double.POSITIVE_INFINITY(EJB 实体/JBoss)

转载 作者:可可西里 更新时间:2023-11-01 06:46:19 26 4
gpt4 key购买 nike

我有以下简单的 JPA 实体:

@Entity
@Table( name = myentity_table )
public class MyEntity {

private double a;
private double b;
//(...)
}

ab 可以设置为 Double.POSITIVE_INFINITY。当我尝试使用标准实体管理器将 double 设置为 +INF 的实体存储到数据库 (MySQL) 中时,出现异常:

java.sql.SQLException: 'Infinity' is not a valid numeric or approximate numeric value

据我所知,MySQL 可能不支持 NaN/-INF/+INF 数字。有没有什么方法可以在不编写 HQL 查询并将 +INF 转换为 null(或 max double)的情况下存储该实体?理想情况下,我想像往常一样通过实体管理器来完成。

提前致谢。

最佳答案

实体生命周期回调方法@PrePersist、@PreUpdate可以在这里用来验证字段值NAN/-INF/+INF等,然后相应地设置默认值。

 //--

@PrePersist
@PreUpdate
private void resetField() {

if(field == Double.POSITIVE_INFINITY)
field = somePredefinedValue;
}

//--

关于mysql - 在 MySQL 中存储 Double.POSITIVE_INFINITY(EJB 实体/JBoss),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5807749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com