Я думаю, что вы можете достичь этого по крайней мере двумя способами.
Значение базы данных по умолчанию
Я думаю, что самым простым способом было бы пометить столбец как updateable=false, insertable=false
(это даст вам неизменность - JPA не будет включать этот столбец в операторы INSERT
и UPDATE
) и установить для столбца базы данных значение значение по умолчанию NOW.
Методы обратного вызова жизненного цикла JPA
Другой способ - предоставить метод обратного вызова жизненного цикла @PrePersist
, который установит для вашего объекта даты фактическую дату new Date()
. Тогда вам нужно убедиться, что никто не будет редактировать это значение, поэтому не следует указывать установщики для этого свойства.
Если вы хотите, чтобы дата изменялась при изменении сущности, вы можете, аналогично, реализовать @PreUpdate
метод обратного вызова жизненного цикла, который бы устанавливал фактическую дату модификации.
Просто помните, что если вы работаете с объектами Date, вы должны сделать защитную копию вашего объекта Date (поэтому вы должны вернуть что-то вроде new Date(oldDate.getTime());
вместо простого return oldDate
).
Это не позволит пользователям использовать получатель вашей даты и изменять ее состояние.