当通过Hibernate使用TemporalType.Time时,12:00:00在MySql中存储为00:00:00

时间:2012-08-20 23:32:02

标签: mysql hibernate jpa

我在我的应用程序中使用Hibernate来存储“时间”(小时,分钟,秒)。我正在使用Hibernate来管理我的实体。我在我的实体中使用了JPA注释@ TemporalType.Time,如下所示:

@Temporal(TemporalType.TIME)
public Date getTime_out() {
    return time_out;
}

我存储的时间是从Web服务请求中获取的字符串,如下所示:

            DateFormat df = new SimpleDateFormat("hh:mm:ss");
            Date date = null;
            try {
                date = df.parse(timeHHMM);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

我希望网络请求采用特定格式(我知道这可能不是正确的做法,但我只是在玩实验)。将String转换为Date后,我在实体上设置时间并将其保存在数据库中。

当我的输入是08:00:00时,它按预期存储为08:00:00。当它是13:00:00(下午1点)时,它被存储为13:00:00,这是我想要的。但是,当我的输入是12:00:00(下午12点)时,它将被存储为00:00:00。

我在这里错过了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

您使用的日期格式错误。 hh指定上午/下午格式的小时,因此12:00:00默认为上午12点(00:00:00)。

你需要:

SimpleDateFormat("HH:mm:ss")