我创建了一个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