如何使用 Java / Hibernate 在 SQL 中自动插入当前日期

Posted

技术标签:

【中文标题】如何使用 Java / Hibernate 在 SQL 中自动插入当前日期【英文标题】:How to auto insert Current DATE in SQL with Java / Hibernate 【发布时间】:2012-03-15 13:00:35 【问题描述】:

当我创建一个新的OperantionBank 时,我需要将当前日期自动添加到我的数据库中。 我正在使用休眠。 谢谢

import java.io.Serializable;
import java.sql.Date;
import javax.persistence.*;
import org.hibernate.annotations.Generated;
import org.hibernate.annotations.GenerationTime;

@Entity
public class OperationBank implements Serializable 
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private String wordring;

private Double amount;

@Generated(GenerationTime.ALWAYS)
@Temporal(javax.persistence.TemporalType.DATE)
private Date dateoperation = new java.sql.Date(new java.util.Date().getTime());

@OneToOne
private Account account;

【问题讨论】:

那么,当你运行上面的代码时会发生什么?它工作了吗?如果您遇到任何异常,请发布日志。 没有例外,但是我的sql数据库中的col“日期”由NULL填充。 【参考方案1】:

虽然 Emil H 是正确的,但我想补充一下,你的做法也应该有效。

这不太可能是因为列的名称(您在评论中说它是“日期”)与字段的名称(“日期操作”)不匹配。

您可以重命名字段/列,或添加注释:

@Column(name = "date")

另请注意:您不必使用 java.sql.Date,它应该也可以与 java.util.Date 一起使用。

import java.util.Date;
...

@Column(name = "date")
private Date dateoperation = new Date();

【讨论】:

【参考方案2】:

这个答案可能会对你有所帮助:

https://***.com/a/221827/355499

本质上,您使用@PrePersist 和/或@PreUpdate 注释在需要时生成日期。

【讨论】:

【参考方案3】:

对于创建,您需要使用:

@CreationTimestamp
@Generated(GenerationTime.ALWAYS)
@Temporal(javax.persistence.TemporalType.DATE)
private Date dateoperation = new java.sql.Date(new java.util.Date().getTime());

【讨论】:

【参考方案4】:

只需使用:

@CreatedDate
@Temporal(TemporalType.DATE)
@Column(name = "start_date")
private Date startDate;

【讨论】:

【参考方案5】:

试试这个作为输入 2004-05-19

@Temporal(TemporalType.DATE)

私人日历tryMe;

【讨论】:

以上是关于如何使用 Java / Hibernate 在 SQL 中自动插入当前日期的主要内容,如果未能解决你的问题,请参考以下文章

笔记之_java整理hibernate

如何在 Hibernate 中使用加入 Java 程序?

java - 如何在hibernate java中为给定的xml使用注释

如何使用java在hibernate 3 + oracle中设置查询级别超时

如何使用 Java / Hibernate 在 SQL 中自动插入当前日期

如何在 Hibernate/JPA 中使用 Java 8 Date 库? [复制]