I have use columnDefinition
to specify default value for a column, however it does not store default value it stores null only,
Please help regarding this,
@Column.columnDefinition
is used during DDL phase to create your table and NOT during normal program running; probably you have to work with @DynamicInsert/@DynamicUpdate
: this annotations insert (or update) only properties you setted into you POJO and let RDBMS to manage other fields.
A small example
@Entity
class MyTable {
@Id
private int code;
@Column(name = "SourceFrom", columnDefinition = "varchar(15) default 'Case'")
private String sourceFrom;
}
and this is the generated code from DDL phase
create table mytable (code integer not null,SourceFrom varchar(15) default 'Case')
MyTable t = new MyTable();
t.setCode(10);
session.save(t);
will do this statement
insert into mytable (code, SourceFrom) values (10,NULL)
MyTable t = new MyTable();
t.setCode(10);
t.setSourceFrom("MANUAL INSERT");
session.save(t);
will do this statement
insert into mytable (code, SourceFrom) values (10,'MANUAL INSERT')
If you annotate MyTable
with @DynamicInsert
the first example will generate this statement
insert into mytable (code) values (10)
As you can see the value of field SourceFrom
is not specified and value inserted into database table is defined by column definition default value ('Case'
in this case).
Manual processing of default value (in setter, with @PrePersist
or other solution) are still valid.