2

JavaコンソールアプリでHibernate4.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でも)で見つかったいくつかのtuts / answerをフォローしようとしていて、java.sql.Dateの代わりにアノテーション付きのjava.util.Dateを使用することにしました(MySQLタイプがであるためdatetime)。そして、これが私が成し遂げることができたすべてです。時間部分を取得するにはどうすればよいですか?

4

1 に答える 1

2

データベース内のデータがすでに切り捨てられている可能性があります。Timestampの代わりに保存してみてくださいDate。例えば

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

setCreatedAt(new Timestamp(Calendar.getInstance().getTimeInMillis())); 
于 2013-03-24T21:00:42.243 に答える