java—mysql表列中未设置默认值

fquxozlt  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(409)

我创建了一个包含一个十进制字段的表 PERCENTAGE 并将默认值设置为0.0,但在从hibernate插入数据时,它不会插入默认值inserting 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());

请指出代码中的错误。

v9tzhpje

v9tzhpje1#

你可以试试 @Column(columnDefinition="Decimal(10,2) default '0.00'") 试试这个

628mspwn

628mspwn2#

错误的是应该在代码中设置默认值。
在保存实体时,告诉hibernate保存实体及其所有字段,包括空字段。所以它插入null。
数据库中设置的默认值仅在不在列中插入任何内容时使用(即该列甚至没有出现在insert查询中)。冬眠时不会这样。

相关问题