我的档案有字段 -
<property name="createdTs" type="timestamp">
<column name="created_ts" length="29" />
</property>
当我用 -
保存表格时public void persist(DrRequest transientInstance) {
log.debug("persisting DrRequest instance");
try {
Transaction trans=sessionFactory.getCurrentSession().beginTransaction();
sessionFactory.getCurrentSession().persist(transientInstance);
trans.commit();
log.debug("persist successful");
} catch (RuntimeException re) {
log.error("persist failed", re);
throw re;
}
它不会将当前时间的created_ts
字段保存在postgresql数据库表中。
created_ts
的类型为timestamp without time zone
。
答案 0 :(得分:1)
如果使用hibernate.hbm2ddl.auto生成数据库模式,则需要指示Hibernate包含默认的“CURRENT_TIMESTAMP”指令:
<column name="created_ts" length="29" sql-type="timestamp without time zone" default="CURRENT_TIMESTAMP"/>
如果您有现有架构,则需要更改它以为此时间戳列添加DEFAULT值。
Hibernate不会知道数据库生成的值,所以你需要刷新你的实体,在你持久化并刷新Hibernate会话之后:
session.flush();
session.refresh(transientInstance);
这样您就可以重新加载实体并获取数据库生成的值。