У меня есть объект JPA, который содержит два столбца, createdTime
и modifiedTime
. Я хотел бы использовать функцию MySQL DEFAULT CURRENT_TIMESTAMP
, чтобы сгенерировать правильное значение времени для этого двух столбцов, поэтому я пишу свой класс сущностей следующим образом:
@Entity
public class Blog {
// ...
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created_time", updatable = false, insertable = false, nullable = false,
columnDefinition = "datetime default CURRENT_TIMESTAMP")
private Date createdTime;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "modified_time", updatable = false, insertable = false, nullable = false,
columnDefinition = "datetime default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private Date modifiedTime;
}
Затем я провожу некоторый эксперимент на своем приложение, когда я проверяю базу данных, значение этого двух столбцов в базе данных обновляется должным образом.
Однако, когда я проверяю возвращение сущности java на BlogRepository::save
, значение этого двух столбцов не самая новая ценность. Например, когда я вставляю новую сущность Blog
, я получаю значение NULL для этих двух свойств возвращаемого значения BlogRepository::save
.
Я прочитал какой-то пост, такой как { ссылка } , поймите, что если я отмечу столбец как updatable = false
, такая ситуация произойдет. Так как мне это исправить? Просто удалите updatable = false
/ insertable = false
, похоже, ничего не поделаешь, но вызовет несоблюдение ограничения NULL для столбца. Но если я уберу ограничение not null для этих двух столбцов, значение этих двух столбцов будет просто нулевым.