Значение по умолчанию не установлено в столбце таблицы MySql - PullRequest
0 голосов
/ 27 июня 2018

Я создал одну таблицу, которая содержит одно десятичное поле PERCENTAGE и установил значение по умолчанию равным 0,0, но при вставке данных из спящего режима он не вставляет значение по умолчанию, вставляя ноль вместо 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 голосов
/ 28 июня 2018

Вы можете попробовать @Column(columnDefinition="Decimal(10,2) default '0.00'")

Попробуйте это

0 голосов
/ 27 июня 2018

Что плохого в том, что в коде должно быть установлено значение по умолчанию.

При сохранении сущности вы указываете Hibernate сохранить сущность со всеми ее полями, включая нулевые. Так что вставляет ноль.

Значения по умолчанию, установленные в базе данных, используются только тогда, когда вы ничего не вставляете в столбец (т. Е. Когда столбец даже не появляется в запросе на вставку). Этого не случится с Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...