Creo que puede lograrlo en al menos dos formas.
valor por defecto de base de datos
Creo que la manera más fácil sería para marcar la columna como updateable=false, insertable=false
(esto le dará la inmutabilidad - la APP no incluirá esta columna en INSERT
y UPDATE
declaraciones) y el establecimiento de la base de datos columna para tener un valor predeterminado de AHORA.
APP Ciclo de Vida de los métodos de devolución de llamada
Otra forma sería la de proporcionar un método de devolución de llamada de ciclo de vida @PrePersist
que fijaría el objeto de fecha para la fecha real new Date()
. Entonces necesitarás asegurarte de que nadie editará este valor, por lo que no debes proporcionar ningún setter para esta propiedad.
Si desea que la fecha se actualice cuando se modifique entidad, podría, de forma similar, implementar @PreUpdate
método de devolución de llamada de ciclo de vida que establecería la fecha de modificación real.
Sólo recuerde que si se trabaja con objetos Date que debe hacer una copia defensiva de su fecha de objeto (por lo que debe devolver algo así como new Date(oldDate.getTime());
en lugar de llanura return oldDate
).
Esto evitará que los usuarios usen getter de su Fecha y modifiquen su estado.
¿Tiene algún requisito que indique que se supone que la base de datos debe establecer el valor de la fecha 'actual' o puede hacerlo la JPA? –
@PiotrNowicki - se puede hacer por JPA. Actualmente lo estoy haciendo dentro de mi código de aplicación. – ripper234