Как я могу использовать тип столбца TIMESTAMP для элемента ZonedDateTime объекта? - PullRequest
0 голосов
/ 18 июня 2019

Я использую данные Spring jpa и mariadb последняя версия и 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

Это моя сущность:

@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;
}

Когда я сохраняю свою сущность, Hibernate пытается сохранить элемент ZonedDateTime как столбец DATETIME . Но я хочу использовать столбец TIMESTAMP вместо столбца DATETIME .

Это создать DDL, что я вижу из журнала.

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

Здесь create_dt, schedule_dt, update_dt создается как тип столбца datetime, чего я не хотел. (Мне тоже не нравится MyISAM).

Как я могу это исправить?


Добавлено, поскольку комментарий не может выражать ddl.

Когда я использую атрибут columnDefinition, генерируется ddl ...

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`)) 

двигатель = MyISAM * * одна тысяча тридцать девять

Вокруг TIMESTAMP есть необязательные '`'.

1 Ответ

0 голосов
/ 18 июня 2019

Вы можете определить тип столбца с помощью аннотации @Column:

@Column(columnDefinition="TIMESTAMP")  
@UpdateTimestamp
private ZonedDateTime updateDt;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...