MySql 表列中未设置默认值
Posted
技术标签:
【中文标题】MySql 表列中未设置默认值【英文标题】:Default value is not set in MySql Table Column 【发布时间】:2018-12-06 15:40:15 【问题描述】:我创建了一个包含一个十进制字段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());
请提出代码中的问题。
【问题讨论】:
这是一个错字。请无视 【参考方案1】:错在代码中应该设置默认值。
保存实体时,您告诉 Hibernate 保存实体及其所有字段,包括空字段。所以它插入null。
数据库中设置的默认值仅在您未在列中插入任何内容时使用(即当该列甚至没有出现在插入查询中时)。 Hibernate 不会发生这种情况。
【讨论】:
private BigDecimal percentage = BigDecimal.ZERO;
.【参考方案2】:
你可以试试@Column(columnDefinition="Decimal(10,2) default '0.00'")
试试这个
【讨论】:
【参考方案3】:更改百分比列并在默认值之外添加“not null”。
【讨论】:
分享代码 sn-p 在这里会有所帮助。以上是关于MySql 表列中未设置默认值的主要内容,如果未能解决你的问题,请参考以下文章