RESTful Webservice时间值问题



我创建了一个rest式web服务,该web服务使用mysql数据库。这是按照Netbeans IDE的使用方法完成的。

一切都很好,除了一件小事。

有一个表被设置为'time'类型(默认值00:00:00),但由于某种原因,当我访问wadl时,我看到:

<time>1970-01-01T17:00:00+01:00</time>

我不是一个很好的Java程序员,但我在Netbeans的web服务源代码中看到了这个:

public void setDate(Date time) {
    this.time = time;
}

如何将其更改为时间值?有我可以使用的标准类吗?

[编辑]

我正在运行一个glassfish服务器,在那里我部署了Netbeans生成的war文件。

使用Netbeans和mysql生成RESTful web服务的教程

(netbeans.org/kb/docs/websvc/rest.html #实体和服务)

在数据库中,时间值通常只是作为一个忽略日期部分的长值存储,这导致当它转换为日期时,日期值是unix epoch值(即0)。

所以我不确定这是一个问题,只是把它转换回接收端的日期,你会有一个正确设置时间的日期。

编辑:我假设你有一个传输对象,你在其中定义了这个"时间"参数?还是使用hibernate或类似的对象作为rest xml生成器的输出?

如果是,您是否尝试将数据类型从Date更改为Time?

另一种方法是将类型更改为String,并在setDate方法中使用SimpleDateFormat以获得您想要的确切形式的字符串。

RESTful web服务公开的类型定义在类YourTableFacadeREST中。尝试修改该类中相应方法的返回类型。

编辑问题是,当曝光的对象更复杂,而你的约会对象只是该对象的"一部分"时,上述想法就行不通了。最好的解决方案可能是用读取对象的代码来处理转换。

如果您的目标只是显示这些数据(例如,对于GET类型的请求),您可以尝试使用视图。我从来没有在视图上做过基于rest的web服务,但它应该适用于GET端。您的视图应该显示原始表,并将datetime字段转换为日期。下面是在MySql中创建视图的语法:http://dev.mysql.com/doc/refman/5.0/en/create-view.html

相关内容

  • 没有找到相关文章