This annotation must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.
So when the field variable is a java.util.Date or java.util.Calendar, it MUST be annotated by @Temporal.
There are 3 values for @Temporal
- TemporalType.DATE
- TemporalType.TIME
- TemporalType.TIMESTAMP
Here is a demo to show the usage of there 3 values. The Entity 'MyEntity' has a field called 'lastUpdateTime' which is a defined as a java.util.Date variable. let's update it in java like this:
1 2 3 4 5 | import java.util.Date; //... // MyEntity is the JPA entity, em is EntityManager context MyEntity e = em.find(MyEntity. class , 1L); //get the row with id=1 e.setLastUpdateTime( new Date()); |
TemporalType.DATE
If the column annotated with @Temporal(TemporalType.DATE) like this:
1 2 3 | @Temporal (TemporalType.DATE) @Column (name= "LAST_UPDATE_TIME" ) private Date lastUpdateTime; |
The record in database after update will look like:
TemporalType.TIME
If the column annotatedwith @Temporal(TemporalType.TIME) like this:
1 2 3 | @Temporal (TemporalType.TIME) @Column (name= "LAST_UPDATE_TIME" ) private Date lastUpdateTime; |
The record in database after update will look like:
TemporalType.TIMESTAMP
If the column annotated with @Temporal(TemporalType.TIMESTAMP) like this:
1 2 3 | @Temporal (TemporalType.TIMESTAMP) @Column (name= "LAST_UPDATE_TIME" ) private Date lastUpdateTime; |
awesome
ReplyDelete