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

omn*_*nom 6 mysql jboss ejb jpa infinity

我有以下简单的JPA实体:

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

  private double a;
  private double b;
  //(...)
}
Run Code Online (Sandbox Code Playgroud)

ab可以设置为Double.POSITIVE_INFINITY.当我尝试使用标准实体管理器将具有双重设置的实体存储到数据库(MySQL)中时,我得到异常:

java.sql.SQLException:'Infinity'不是有效的数值或近似数值

据我所知,MySQL可能不支持NaN/-INF/+ INF数字.有没有办法存储这个实体而不编写HQL查询并将+ INF转换为null(或max double)?理想情况下,我想像往常一样通过实体经理来做.

提前致谢.

Nay*_*kar 3

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

 //--

 @PrePersist  
 @PreUpdate  
 private void resetField() {

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

 //--
Run Code Online (Sandbox Code Playgroud)