未在“ MySQL表”列中设置默认值

时间:2018-06-27 16:53:41

标签: java mysql hibernate

我创建了一个包含一个十进制字段PERCENTAGE的表,并将默认值设置为0.0,但是在从休眠模式插入数据时,它不会插入默认值,而是插入null而不是0.0。

创建表查询:::

CREATE TABLE table (
  ID INT(10) NOT NULL AUTO_INCREMENT, 
  DOB DATE NOT NULL,
  RELATIONSHIP VARCHAR(50) NOT NULL,
  PERCENTAGE DECIMAL(10,2) DEFAULT 0.0,
  PRIMARY KEY (ID)
);


In Domain Object 


@Entity
@Table(name = "table")
public class Table implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@Column(name = "ID")
@GeneratedValue(strategy = IDENTITY)
private Integer ID;

@Temporal(TemporalType.DATE)
private Date dob;

private BigDecimal percentage;

private String relationship;  

将数据保存到数据库

MapInsuranceNominee mapInsuranceNominee = new MapInsuranceNominee();
mapInsuranceNominee.setDob(vo.getDob()));    
mapInsuranceNominee.setRelationship(vo.getRelation());

请提出代码中的错误。

2 个答案:

答案 0 :(得分:2)

错误的是,应在代码中设置默认值。

保存实体时,您告诉Hibernate保存该实体及其所有字段,包括空字段。因此它插入null。

仅当您不在列中插入任何内容时(即,列甚至没有出现在插入查询中时),才使用数据库中设置的默认值。休眠不会发生这种情况。

答案 1 :(得分:0)

您可以尝试@Column(columnDefinition="Decimal(10,2) default '0.00'")

尝试一下