Я могу заставить его работать с любым из следующих решений:
//spring way, with @EnableJpaAuditing on configuration
@EntityListeners(AuditingEntityListener.class)
class MyEntity {
@CreatedDate
@Column(columnDefinition = "TIMESTAMP", nullable = false)
private LocalDateTime created_at;
}
//hibernate way
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date created_at;
//mysql way
@Column(insertable = false, updatable = false,
columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private LocalDateTime created_at;
Для mysql
важная часть: insertable=false
для mysql с использованием определенных DEFAULT CURRENT_TIMESTAMP
и updatable=false
для ON UPDATE CURRENT_TIMESTAMP
.
В противном случае, hibernate orm отправит created_at=null
в качестве нулевого значения в базу данных, предотвращая принятие определения столбца! Или хуже, если вы установите nullable=false
, вставка завершится неудачно, хотя вы определили обработку метки времени по умолчанию для столбца.