How to map timestamp column to JPA type? How to map timestamp column to JPA type? postgresql postgresql

How to map timestamp column to JPA type?


I didn't solve the problem exactly, but I worked around it.

Instead of having the database supply the default value of now(), I expressed it in JPA with @PrePersist:

@Column(name="created_at", nullable=false)@Temporal(TemporalType.TIMESTAMP)public Date createdAt;@PrePersistprotected void onCreate() {    createdAt = new Date();}

That works fine! Inspiration taken from this answer.I'm still not sure why Hibernate didn't get updated with the default value that was applied in the database. It was stuck thinking the value was still null.


Try this:

@Column(name="create_at", insertable=false)@Temporal(TemporalType.TIMESTAMP)private Date createAt;


You need to detach and fetch entity from db. Insert statement does not contain created_at field so it's not managed by JPA at the time of creation. In repository it would look like this:

@Transactionalpublic Log save(Log log) {    this.em.persist(log);    this.em.detach(log);    return this.em.find(Log.class, log.getId());}