Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检索时,存储在数据库上的Hibernate时间戳值为零_Java_Mysql_Hibernate_Netbeans - Fatal编程技术网

Java 检索时,存储在数据库上的Hibernate时间戳值为零

Java 检索时,存储在数据库上的Hibernate时间戳值为零,java,mysql,hibernate,netbeans,Java,Mysql,Hibernate,Netbeans,我想做的是获得两个事件之间的差异,在这种情况下,是指一家商店开始制造某些物品的事件,以及同一家商店开始将其运送到客户所在地的时间。 我正在使用java和hibernate开发这个WebApp。 该实体称为报告(因为我将根据此信息生成报告) 两个事件的属性都是: @Column private Timestamp fechaFabricacion; @Column private Timestamp fechaTransporte; 它们正确地存储在我的数据库中,如下所示: 2012-09

我想做的是获得两个事件之间的差异,在这种情况下,是指一家商店开始制造某些物品的事件,以及同一家商店开始将其运送到客户所在地的时间。 我正在使用java和hibernate开发这个WebApp。 该实体称为报告(因为我将根据此信息生成报告) 两个事件的属性都是:

@Column
private Timestamp fechaFabricacion;
@Column   
private Timestamp fechaTransporte;
它们正确地存储在我的数据库中,如下所示:

2012-09-24 13:13:10 
用于制造开始 及

用于运输启动

我想报告的是,商店(在本例中)从制造到运输花费了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);
Query qr=em.createNamedQuery(“Reporte.findbynumseguimientorega”);
qr.setParameter(“numsguiminenterga”,numsguiminento);
List reportList=qr.getResultList();
Reporte report=reportList.get(0);
Timestamp Timestamp 1=report.getFechaInicio();
Timestamp Timestamp 2=report.getFechaFabricacion();
长时间差=(timeStamp1.getTime()-timeStamp2.getTime())/(1000*60*60*24);
问题是,正如我的调试器在下图中所示,我的两个时间戳值都得到了0:

我做错了什么?我怎样才能得到实际值和时间差


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

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

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

我认为这样应该可以很好地工作。

感谢您的快速响应,问题是我需要以月、日、小时、分钟和秒为单位存储它,因为制作可能需要几周甚至几秒钟。当我尝试使用@Temporal(TemporalType.TIMESTAMP)时,它不允许我编译,因为服务器会说:org.hibernate.AnnotationException:@Temporal应该只在java.util.Date或java.util.Calendar上设置。为什么不将其更改为日期?它将存储有关您所需时间的所有数据。这就是我使用它的方式,它确实适用于这些情况。可能在注释中,它在内部将日期存储为时间戳,但一旦时间戳扩展日期,对象必须是日期。你需要时间戳的纳米部分吗?好的,我需要得到每个事件之间的秒差。你说这个差应该是“秒”?但是您正在计算“天”(如果实际差异仅为30秒,那么天当然是0)。
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DATE")
public Date getDate() {
    return this.date;
}