【问题标题】:How to save only the date in hibernate?如何在休眠中只保存日期?
【发布时间】:2012-12-26 03:42:11
【问题描述】:

我已将 Java.util.Date 类型的属性映射到 MySQL 数据库中的表列。它保存了整个日期/时间!我怎样才能让休眠只保存日期而不是时间。 我的映射是:

    <property name="registrationDate" type="java.util.Date">
        <column name="regDate" length="10" />
    </property>

【问题讨论】:

    标签: hibernate hibernate-mapping


    【解决方案1】:

    您必须在表格中将列指定为 DateTime 类型。只需将其设为日期类型列即可。所以只会存储日期部分。

    编辑:

    如果您使用表自动生成,您可以按如下方式定义您的 java.util.date;

    @Temporal(DATE)
    protected java.util.Date endDate;
    

    如果你使用的是xml配置,可以定义如下;

    <basic name="myDate"/>
    <temporal>DATE</temporal>
    </basic>
    

    【讨论】:

    • 但是表已经被hibernate.hbm2ddl.auto生成了。我自己还没有创建表格。我可能想在调试过程中删除表 1000 次......在数据库中更改它太脏了!您确定没有其他解决方案吗?
    • @user1892555..试试java.sql.Date
    • 您也可以使用 java.util.date。看看我的编辑,它应该适合你。
    • @dinukadev ,我在 HIbernate 5.x 中尝试了相同的情况,仍然无法仅保存日期。
    【解决方案2】:

    如果您只需要今天的日期,您可以使用。 在映射类中:

     @Temporal(TemporalType.DATE)
        @Column(name="ROW_DATE", length=7)
        public Date getMyDate() {
            return this.rowDate;
    }
    

    如果需要日期和时间,可以使用。 在映射类中:

     @Column(name="ROW_DATE")
        public Date getMyDate() {
            return rowDate;
        }
    

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 2011-09-06
      • 2017-09-07
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 2021-04-29
      相关资源
      最近更新 更多