检索时,存储在数据库中的Hibernate Timestamp值为零

时间:2012-09-24 19:09:06

标签: java mysql hibernate netbeans

我想要做的是获取两个事件之间的区别,在这种情况下,商店开始制造某个商品时的事件以及同一商店开始将其运送到客户位置的时间。 我使用java和hibernate来开发这个WebApp。 该实体称为报告(因为我将根据此信息生成报告) 这两个事件的属性是:

@Column
private Timestamp fechaFabricacion;
@Column   
private Timestamp fechaTransporte;

它们正确地存储在我的数据库中:

2012-09-24 13:13:10 

制造开始 和

2012-09-24 13:13:40

用于运输开始。

我要报告的是,商店(在这种情况下)从制造到运输需要30秒。 现在,这些值被完美地存储,我遇到的问题是当我尝试从我的数据库中检索它并进行数学运算时,这就是我使用的代码。

Query qr = em.createNamedQuery("Reporte.findByNumSeguimientoEntrega");
    qr.setParameter("numSeguimientoEntrega",numSeguimiento);
    List<Reporte> reportList = qr.getResultList();
    Reporte report = reportList.get(0);
    Timestamp timeStamp1 = report.getFechaInicio();
    Timestamp timeStamp2 = report.getFechaFabricacion();
    Long timeDiference =(timeStamp1.getTime()-timeStamp2.getTime())/(1000 * 60 * 60 * 24);

问题是,我的调试器在此图像中显示的时间戳纳米值为0:

我在这里做错了什么?如何才能获得实际价值以获得时差?

非常感谢您花时间阅读本文。

1 个答案:

答案 0 :(得分:0)

您必须使用注释在实体中映射日期:

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DATE")
public Date getDate() {
    return this.date;
}

我认为这应该可行。