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)
a和b可以设置为Double.POSITIVE_INFINITY.当我尝试使用标准实体管理器将具有双重设置的实体存储到数据库(MySQL)中时,我得到异常:
java.sql.SQLException:'Infinity'不是有效的数值或近似数值
据我所知,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;
}
//--
Run Code Online (Sandbox Code Playgroud)