所以基本上正如标题提到的,这就是我想要做的,我定义了此列
@Column(name="MATCH_SCORE", columnDefinition="NUMBER(10,4) default '-1.0000'")
private float matchScore;
所以我期望的是,如果该值在数据库中为空,则返回 -1,但是,我仍然将其视为 0,这是一个问题,因为如果该值为零,则我必须采取特定操作如果该值为 null,请不要执行此操作,不幸的是,我无法对数据库进行任何更改,因此我必须从应用程序端执行此操作。
干杯。
最佳答案
这里的部分问题可能是原始 float
不能为 null
。相反,您可以使用Float
,但映射NUMBER
(精确精度)列的更好选择是BigDecimal
。试试这个版本:
@Column(name="MATCH_SCORE", columnDefinition="NUMBER(10,4) default -1.0000")
private BigDecimal matchScore;
另请注意,列默认值的目的是,如果发生插入并且没有为该列指定值(或NULL
),则数据库将使用该默认值。默认值实际上与您选择时发生的情况没有任何关系;该记录的列中的任何值都将被返回。
关于java - 如果可能的话, float 基元返回 null,如果数据库中的值为 null,则返回特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59055578/