Penso che si possa ottenere in almeno due modi.
valore predefinito Database
penso che il modo più semplice sarebbe quella di segnare la colonna come updateable=false, insertable=false
(questo vi darà immutabilità - l'APP non includerà questa colonna in INSERT
e UPDATE
dichiarazioni) e l'impostazione del database colonna per avere un valore predefinito di NOW.
JPA Lifecycle metodi di callback
altro modo sarebbe quello di fornire un metodo di callback @PrePersist
ciclo di vita che avrebbe impostato l'oggetto data per la data effettiva new Date()
. Quindi dovresti assicurarti che nessuno modificherà questo valore, quindi non dovresti fornire alcun setter per questa proprietà.
Se si desidera aggiornare la data quando si modifica l'entità, è possibile, allo stesso modo, implementare il metodo di callback del ciclo di vita @PreUpdate
che imposterà la data di modifica effettiva.
Basta ricordare che se si sta lavorando con oggetti Date si dovrebbe fare una copia difensiva del vostro oggetto Date (così si dovrebbe tornare qualcosa come new Date(oldDate.getTime());
invece del semplice return oldDate
).
Ciò impedirà agli utenti di utilizzare getter del vostro Date e modificarne lo stato.
fonte
2011-11-20 14:51:50
Avete bisogno di dire che il database dovrebbe impostare il valore di data "ora" o può farlo l'APC? –
@PiotrNowicki - può essere fatto da JPA. Attualmente lo sto facendo all'interno del mio codice applicazione. – ripper234