有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java hibernate在读取时截断MySQL datetime的时间部分

我在java控制台应用程序中使用hibernate 4.1.10,我有一个带有以下专栏的模型:

@Column(name = "created_at", columnDefinition="datetime")
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;

我只是希望java能够正确处理整个MySQL日期时间。现在,它只能读取日期部分,其余部分被截断。我有一个简单的测试,我只是将getCreatedAt()属性打印到stdout:

System.out.println(income.getCreatedAt());

并打印出以下内容:

2012-05-11 00:00:00.0
2012-05-29 00:00:00.0
2012-05-30 00:00:00.0
2012-06-28 00:00:00.0
2012-07-30 00:00:00.0
2012-08-29 00:00:00.0
2012-09-28 00:00:00.0
2012-10-30 00:00:00.0
2012-11-29 00:00:00.0
2012-12-02 00:00:00.0
2012-12-21 00:00:00.0
2012-12-24 00:00:00.0
2013-01-30 00:00:00.0
2013-02-27 00:00:00.0
2013-02-27 00:00:00.0

这是我的show create table表格:

CREATE TABLE `category` (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `parent_id` bigint(20) DEFAULT NULL,
 `name` varchar(32) NOT NULL,
 `type` varchar(255) DEFAULT NULL,
 `created_at` datetime NOT NULL,
 `updated_at` datetime NOT NULL,
 `created_by` bigint(20) DEFAULT NULL,
 `updated_by` bigint(20) DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `category_type_idx` (`type`),
 KEY `created_by_idx` (`created_by`),
 KEY `updated_by_idx` (`updated_by`),
 KEY `category_parent_id_category_id` (`parent_id`),
 CONSTRAINT `category_created_by_sf_guard_user_id` FOREIGN KEY (`created_by`) REFERENCES `sf_guard_user` (`id`),
 CONSTRAINT `category_parent_id_category_id` FOREIGN KEY (`parent_id`) REFERENCES `category` (`id`),
 CONSTRAINT `category_updated_by_sf_guard_user_id` FOREIGN KEY (`updated_by`) REFERENCES `sf_guard_user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=utf8

我一直在努力学习网络上(也在stackoverflow上)的一些TUT/答案,并决定使用java。util。带有注释而不是java的日期。sql。日期(因为MySQL类型是datetime)。这就是我所能做到的。我可以做什么来检索时间部分


共 (1) 个答案

  1. # 1 楼答案

    数据库中的数据可能已被截断。尝试存储Timestamp而不是Date。比如

    @Column(name = "created_at", length = 19)
    public Timestamp getCreatedAt() {
        return this.createdAt;
    }
    
    setCreatedAt(new Timestamp(Calendar.getInstance().getTimeInMillis()));