如何使用 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 java中为给定的xml使用注释
如何使用java在hibernate 3 + oracle中设置查询级别超时