在我的一个模型中,将列值作为BigDecimal,我需要在jpa级别将默认值设置为0.我会怎么做?
@Entity
public class Myclass{
@Column
private BigDecimal value;
}
答案 0 :(得分:3)
您可以使用columnDefination
属性告诉ORM该字段的默认值。实际上,这是一种拥有此功能的隐含方式。
@Column(name="value", columnDefinition="Decimal(10,2) default '0.00'")
private BigDecimal value = BigDecimal.ZERO;
除此之外,您可以使用BigDecimal.ZERO
初始化字段,当您在保留之前从该实体创建new
对象时,该字段将占用相同的目的。
答案 1 :(得分:1)
试试这个:
@Entity
public class Myclass{
@Column
private BigDecimal value = BigDecimal.ZERO;
}
恕我直言,这段代码比魔术注释更清楚地表明了你的意图。
答案 2 :(得分:0)
更改setter方法并将数据库列中其他明智设置值的默认值设置为默认值。 public void setvalue(BigDecimal value){if(value == null){this.value = 0;}}
答案 3 :(得分:0)
使用hibernate注释检查Documentation
@ColumnDefault("0")
private BigDecimal value;
答案 4 :(得分:0)
我遇到了这段代码,发现添加 new
关键字,否则你会遇到 NullPointerException
@Entity
public class Myclass{
@Column
private BigDecimal value = new BigDecimal("0"); //
private BigDecimal value = new BigDecimal(BigDecimal.ZERO);
}