I'm using Spring data jpa and mariadb latest version, and MariaDB 10.3.16
+--- org.springframework.boot:spring-boot-starter-data-jpa -> 2.1.5.RELEASE ... | +--- org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE ... | +--- org.hibernate:hibernate-core:5.3.10.Final This is my Entity:
@Entity @Data @Table @NoArgsConstructor @AllArgsConstructor public class Note { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private Integer id; @Column private String gsn; @Column @Enumerated(EnumType.STRING) private NoteType type; @Column private String text; @Column private ZonedDateTime scheduleDt; @Column @CreationTimestamp private Instant createDt; @Column @UpdateTimestamp private ZonedDateTime updateDt; } When I persist my entity, Hibernate tries to save ZonedDateTime member as DATETIME column. But I want to use TIMESTAMP column instead of DATETIME column.
This is create DDL, what I see from log.
create table `note` (`id` integer not null, `create_dt` datetime, `gsn` varchar(255), `schedule_dt` datetime, `text` varchar(255), `type` varchar(255), `update_dt` datetime, primary key (`id`)) engine=MyISAM Here create_dt, schedule_dt, update_dt is created as datetime column type, what is not I wanted. (I don't like MyISAM, too).
How can I fix it?
Added because comment cannot express ddl.
When I use columnDefinition attribute, generated ddl is ...
create table `note` (`id` integer not null, `create_dt` datetime, `gsn` varchar(255), `schedule_dt` datetime, `text` varchar(255), `type` varchar(255), `update_dt` `TIMESTAMP`, primary key (`id`)) engine=MyISAM
There is unrequired '`' around TIMESTAMP.