如何在hibernate中自动生成实体bean中的时间戳?

时间:2011-07-26 09:00:24

标签: java hibernate

如何在hibernate中自动生成实体bean中的时间戳?

@Generator是否有任何东西直接放入其中:

@GeneratedValue(vale=new Date().getTime())

3 个答案:

答案 0 :(得分:1)

您不能在注释中加入一些代码,只需提供值即可。

要在每次更改实体时自动更新时间戳,您可以在时间戳字段上使用@Version:

   @Version
   private Timestamp lastUpdate;

答案 1 :(得分:1)

您可以实现全局EntityInterceptor:

public class GlobalEntityInterceptor 
    extends EmptyInterceptor {
    @Override
    public boolean onSave(java.lang.Object entity, java.io.Serializable p2, java.lang.Object[] p3, java.lang.String[] p4, org.hibernate.type.Type[] p5) {   
  //first save - you can modify your entity fields
}
    @Override
    public boolean onFlushDirty(java.lang.Object entity, java.io.Serializable p2, java.lang.Object[] p3, java.lang.Object[] p4, java.lang.String[] p5, 
                                    org.hibernate.type.Type[] p6) { 
  //modification  - you can modify your entity fields 

}

有一些注释驱动的解决方案,例如 @PrePersist ,但它们仅适用于少数environments

答案 2 :(得分:0)

您可以使用hibernates拦截器来填充具有某些数据的实体,即。创作日期等。

请阅读此处了解有关interceptors

的更多信息