将 LocalDateTime 设置为使用休眠 4.3.10 自动生成

Posted

技术标签:

【中文标题】将 LocalDateTime 设置为使用休眠 4.3.10 自动生成【英文标题】:Set LocalDateTime to autogenerate with hibernate 4.3.10 【发布时间】:2015-08-22 14:34:13 【问题描述】:

目前我有一个基本实体如下:

@MappedSuperclass
public abstract class BaseEntity 
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    private Long id;
    private boolean deleted;

    @Convert(converter = LocalDateTimePersistenceConverter.class)
    private LocalDateTime createdAt;
    @Convert(converter = LocalDateTimePersistenceConverter.class)
    private LocalDateTime updatedAt;

是否可以在 LocalDateTime 上添加注释以使数据库默认为当前日期和时间?

附言我不允许使用休眠 5。

【问题讨论】:

【参考方案1】:

@LaurentiuL 是正确的。 但我认为下面也应该有效

@Convert(converter = LocalDateTimePersistenceConverter.class)
private LocalDateTime createdAt = new LocalDateTime ();
@Convert(converter = LocalDateTimePersistenceConverter.class)
private LocalDateTime updatedAt= new LocalDateTime ();

这个问题的答案也应该对你有所帮助:Creation timestamp and last update timestamp with Hibernate and mysql

【讨论】:

@Nomad 哦.. 是的,没错.. 在这种情况下,上述问题的答案应该有效..【参考方案2】:

您可以使用@PrePersist 注解。

在实体管理器持久化操作实际之前执行 执行或级联。此调用与持久化同步 操作。

例子:

  @PrePersist
  protected void onCreate() 
    createdAt = new LocalDateTime();
    updatedAt = new LocalDateTime();
  

如果您认为它合适,您还可以使用 @PreUpdate 注释。

阅读更多events that occur inside hibernate's persistence mechanism

【讨论】:

以上是关于将 LocalDateTime 设置为使用休眠 4.3.10 自动生成的主要内容,如果未能解决你的问题,请参考以下文章

如何将值列表设置为休眠查询的参数?

如何将 linq 中的参数类型设置为 char(*) 类型的休眠查询?

Hibernate LocalDateTime:Postgresql 模式生成在外部 Tomcat 中创建类型为“bytea”的列

使用休眠映射布尔值

休眠文件瘦身教程 Win10休眠文件怎么清

将字符串转换为 LocalDateTime