Я использую JPA с реализацией Hibernate. У меня есть @Entity сделка выглядит следующим образом:Временная метка поля JPA не обновляется
@Entity
public class Transaction {
private int id;
private Date timestamp;
...
@Basic
@Column(name = "timestamp", insertable = false, updatable = true)
@Temporal(TemporalType.TIMESTAMP)
public Date getTimestamp() {
return timestamp;
}
public void setTimestamp(Date timestamp) {
this.timestamp = timestamp;
}
...
@Column(name = "id")
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "transaction_id_seq")
@SequenceGenerator(name = "transaction_id_seq", sequenceName = "transaction_id_seq", allocationSize = 1)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Когда я создаю новую транзакцию не установить id
и timestamp
полей, и я сохранить его в БД с помощью persist()
PersistenceProvider pp = new HibernatePersistence();
EntityManagerFactory emf = pp.createEntityManagerFactory("pu", new HashMap());
EntityManager em = emf.createEntityManager();
Transaction t = new Transaction();
em.getTransaction().begin();
em.persist(t);
em.getTransaction().commit();
После запуска этого кода id
внутри транзакции t является одним, автогенерируемым БД, но метка времени - null
.
Как я могу сделать тигры так, чтобы timestamp
был возвращен объекту после persist()
?
спасибо
Я использую Postgresql, и я не указывал, что временная метка генерируется в соответствии с базой данных с помощью функции now() – hurtledown