【问题标题】:Date conversion in Java HibernateJava Hibernate 中的日期转换
【发布时间】:2016-06-27 23:00:46
【问题描述】:

我有一个日期字段将日期保存到数据库中,日期字段应为日期和时间格式 (MM/dd/yyyy HH:mm:ss).. 为此,我使用 DateFormat 将当前日期转换为,

 DateFormat dateFormat  = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
         Date date = new Date();
         String DateStr = dateFormat.format(date);

这里的结果将是字符串格式并使用 Hibernate 在 DB 中保存为 Date 对象,我必须再次将该日期字符串转换为 Date obj as,

Date newdate = dateFormat.parse(DateStr);

所以我的问题是,有没有更好的方法将当前日期与时间一起作为日期对象返回。 如果我们将字段类型设置为字符串并通过注释为,Hibernate 是否会自动将字符串转换为日期,

@Temporal(TemporalType.DATE)
  @Column(name = "REQUESTED_DATE")
  public String getRequestedDate() {
        return requestedDate;
    }

谢谢。

【问题讨论】:

  • 请澄清一下,您是否将其作为某种 TIME/DATE 类型存储在数据库中?为什么不直接在 Java 中使用 Date 字段而不是 String?
  • 你好,creechy..我想存储当前日期和时间..我不知道该怎么做,因为使用 new Date(),我将只得到日期而不是时间。 .so 我使用 Dateformatter 来获取日期和时间,它以字符串形式返回...我想在 db 中使用日期字段..你能帮我了解如何获取当前日期和时间..

标签: java spring hibernate datetime


【解决方案1】:

将您的注释更改为:

@Temporal(TemporalType.TIMESTAMP)

这会将时间保存到数据库中。

【讨论】:

    【解决方案2】:

    您可以使用java.sql.Date 存储映射到 SQL DATETIME(或 MySQL 变体)的值。我不明白你为什么说“通过使用 new Date(),我 [原文如此] 将只获得日期而不是时间”。这是不正确的。然而,它不是最优的。您也可以使用java.sql.Timestamp。当您使用java.util.Calendar 时,您将获得最佳结果。

    我在不到五分钟的谷歌搜索中找到了http://www.developerscrappad.com/228/java/java-ee/ejb3-jpa-dealing-with-date-time-and-timestamp/,它很好地回答了你的问题。

    【讨论】:

      【解决方案3】:
      @Temporal(value = TemporalType.TIMESTAMP)
      Date date;
      

      您可以将日期对象直接存储到 hibernate 提供给您的数据库中。所以,让我们摆脱字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-11
        • 1970-01-01
        • 2013-02-23
        • 2014-09-15
        • 1970-01-01
        • 1970-01-01
        • 2021-06-07
        相关资源
        最近更新 更多