bguiz
bguiz

Reputation: 28547

Java: JPA classes, refactoring from Date to DateTime

With a table created using this SQL

Create Table X (
    ID varchar(4) Not Null,
    XDATE date
);

and an entity class defined like so

@Entity
@Table(name = "X")
public class X implements Serializable {
    @Id
    @Basic(optional = false)
    @Column(name = "ID", nullable = false, length = 4)
    private String id;
    @Column(name = "XDATE")
    @Temporal(TemporalType.DATE)
    private Date xDate; //java.util.Date
    ...
}

With the above, I can use JPA to achieve object relational mapping. However, the xDate attribute can only store dates, e.g. dd/MM/yyyy.

How do I refactor the above to store a full date object using just one field, i.e. dd/MM/yyyy HH24:mm?

Upvotes: 5

Views: 14054

Answers (2)

Pascal Thivent
Pascal Thivent

Reputation: 570595

If you want to also store time information at the database level, use TemporalType.DATETIME:

@Column(name = "XDATE")
@Temporal(TemporalType.DATETIME)
private Date xDate; //java.util.Date

Use a TIMESTAMP column type at the database level (and xDate will be stored as 'yyyy-MM-dd HH:mm:ss.S').

Upvotes: 7

sblundy
sblundy

Reputation: 61434

Have you tried changing the @Temporal value to TemporalType.DATETIME? java.util.Date and java.sql.Date both store date and time components, the TemporalType controls which part JPA stored/pays attention to; date, time, or both.

Upvotes: 4

Related Questions