TemporalType.TIMESTAMP whit java.util.Date不具备功能(hibernate版本3.2.7.ga)

时间:2014-07-11 15:51:58

标签: java mysql sql hibernate date

我在课堂上有这个

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "data_creazione")
private Date dataCreazione;

如果我在data_creazione上的db上放置null,则保存该对象  我这样做:

Date data=new Date();
newAccordo.setDataCreazione(data);

而且:

newAccordo.setDataCreazione(new Timestamp(data.getTime()));

但不保存对象。我查找放入查询的内容,并且是'2014-07-11 16:40:04',这是正常的日期时间。如果我把它manualy它工作。 在db中我尝试输入datetime和timestamp,但不要在db中写入。

如果我把:

@Temporal(TemporalType.TIME)

他在db中写了日期和时间,但是当我在jsp中标记它之后,我看到只有正确的时间和来自util.date的日期开始。所以我不能使用这个escamotage。 我认为问题可能在于hibernate版本。

你觉得怎么样?

2 个答案:

答案 0 :(得分:0)

你需要这样做:

Date data=new Date();
newAccordo.setDataCreazione(new Timestamp(data.getTime());  // data --> date ??

因为列类型是Timestamp(yyyy-mm-dd HH:mm:ss。),而不是Date(yyyy-mm-dd)类型。确保导入

import java.sql.Timestamp;
import java.util.Date;

还将您的休眠设置为<property name="hbm2ddl.auto">update</property>,这将自动更新列数据类型。

答案 1 :(得分:0)

我通过从mysql生成时间戳来解决它。无论如何,我认为是我正在使用的旧的hibernate版本(3.2.7.ga)或Annotation版本(3.3.0.ga)的错误

无论如何模型是

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "data_creazione")
private Date dataCreazione;

public Date getDataCreazione() {
    return dataCreazione;
}

public void setDataCreazione(Date dataCreazione) {
    this.dataCreazione = dataCreazione;
}