如何注释java.sql.Timestamp对象
背景 我有一个根元素类,它包含类如何注释java.sql.Timestamp对象,java,rest,jaxb,jersey,Java,Rest,Jaxb,Jersey,背景 我有一个根元素类,它包含类java.sql.Timestamp的变量,我希望JAXB从该变量创建xml元素 我尝试过的 我创建的类适配器是 导入java.sql.Date 导入java.sql.Timestamp 导入javax.xml.bind.annotation.adapters.XmlAdapter } 。然后我对获取该变量的函数进行注释: @XmlJavaTypeAdapter(timestapter.class) public java.sql.Timestamp ge
java.sql.Timestamp
的变量,我希望JAXB从该变量创建xml元素
我尝试过的
- 我创建的类适配器是
- 。然后我对获取该变量的函数进行注释:
public java.sql.Timestamp getEndDate(){ 如果(endDate==null) retrieveInfo() 返回结束日期 } 问题 我仍然得到这个例外
java.sql.Date does not have a no-arg default constructor.
我也检查过了,但它是关于字符串到时间戳的,不是我的情况
任何帮助都将不胜感激
编辑
这个变量在类OrderStatus
中,我从类OrderImpl
中这样调用它
@Override
@XmlElement(name = "Status", type = OrderStatus.class)
public OrderStatus getStatus() {
return status;
}
您的适配器需要如下所示:
public class TimestampAdapter extends XmlAdapter<Date, Timestamp> {
public Date marshal(Timestamp v) {
return new Date(v.getTime());
}
public Timestamp unmarshal(Date v) {
return new Timestamp(v.getTime());
}
}
您的
XmlAdapter
应该将Timestamp
转换为java.util.Date
,而不是java.sql.Date,正如我在问题中提到的,我看到了这个答案,这不是我的情况,我得到了这个异常DateAdapter不适用于java.sql.Timestamp类型的字段代码>我已经尝试过你的解决方案,我在问题中提到了这一点。只是问题没有显示出来,现在我编辑它,我应该说清楚。我认为问题在于您没有提到正在转换的类型。在我的回答中,我补充说感谢你的努力,+1可能重复的@BlaiseDoughan它没有重复,请检查问题,它是关于java.sql.date
,而不是java.util.date
谢谢你的回答,我正在尝试。我没有得到异常,但是,当我尝试调用该服务时,在浏览器中也没有得到任何结果。此外,当我试图在本地调用该函数时,我得到了正确的数据(+1)。我在浏览器中得到了类中每个变量的结果,除了EndDate
,似乎这个方法本身并没有触发。我在问题中添加了一些信息,这可能会有所帮助。@WilliamKinaan-如果您尝试JAX-RS之外的独立JAXB示例来测试您的映射,会怎么样。您可以在unmarhaller
上设置ValidationEventHandler
,以捕获任何问题。
@Override
@XmlElement(name = "Status", type = OrderStatus.class)
public OrderStatus getStatus() {
return status;
}
public class TimestampAdapter extends XmlAdapter<Date, Timestamp> {
public Date marshal(Timestamp v) {
return new Date(v.getTime());
}
public Timestamp unmarshal(Date v) {
return new Timestamp(v.getTime());
}
}
@XmlJavaTypeAdapter( TimestampAdapter.class)
public Timestamp done_date;