我正在使用 HibernateXml映射。我有一个有两个字段的实体创建日期 and 更新日期类型的timestamp
,当实体被持久化和更新时,必须用当前的 UTC 时间填充。
我知道 的存在@PrePersist
and @PreUpdate
注释,但我不知道如何在我的 Xml 映射中使用它们的等效项。
再次,我想知道 Hibernate 是否以某种方式本地支持更新和创建时间集。
Thanks
我知道 的存在@PrePersist
and @PreUpdate
注释,但我不知道如何在我的 Xml 映射中使用它们的等效项。
休眠3事件架构 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/events.html#objectstate-events提供了等效的东西,你可以注册监听器PreInsertEvent
, PreUpdateEvent
or SaveOrUpdateEvent
(参见org.hibernate.event
包以获取完整列表)来设置和更新创建/更新日期。
另一种方法是使用拦截器 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/events.html#objectstate-interceptors, 任何一个Session
-范围或SessionFactory
-scoped 并设置两者createDate
and updateDate
in onSave(...)
,更新updateDate
in onFlushDirty(...)
.
Update:我将在下面留下我最初的建议,但我认为正确的方法(应该是我最初的答案)是使用拦截器或事件架构。
你可以使用generated
的属性timestamp http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-timestamp to get creationDate
and updateDate
由数据库分别在插入和插入和更新时生成:
<class name="MyEntity" table="MY_ENTITY">
<id .../>
<timestamp name="createDate" generated="insert" ... />
<timestamp name="updateDate" generated="always" ... />
...
</class>
请参阅有关生成的属性 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-generated了解完整详情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)