【问题标题】:Default value is not set in MySql Table ColumnMySql 表列中未设置默认值
【发布时间】: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());

请提出代码中的问题。

【问题讨论】:

  • 这是一个错字。请无视

标签: java mysql hibernate


【解决方案1】:

错在代码中应该设置默认值。

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

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

【讨论】:

  • private BigDecimal percentage = BigDecimal.ZERO;.
【解决方案2】:

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

试试这个

【讨论】:

    【解决方案3】:

    更改百分比列并在默认值之外添加“not null”。

    【讨论】:

    • 分享代码 sn-p 在这里会有所帮助。
    猜你喜欢
    • 2016-12-28
    • 2017-07-17
    • 2019-04-14
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    相关资源
    最近更新 更多