4

背景

我有一个包含类变量的 Root 元素类java.sql.Timestamp,我希望 JAXB 从该变量创建 xml 元素。

我试过的

  • 我创建了类适配器。

导入java.sql.Date;

导入java.sql.Timestamp;

导入 javax.xml.bind.annotation.adapters.XmlAdapter;

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 java.sql.Timestamp getEndDate() {

如果(结束日期 == 空)

检索信息();

返回结束日期;

}

问题

我仍然得到这个异常

java.sql.Date does not have a no-arg default constructor.

我也检查了This Thread,但它正在谈论 String to TimeStamp,而不是我的情况。

任何帮助,将不胜感激。

编辑

这个变量在类中,我像这样OrderStatus从类中调用它OrderImpl

@Override
    @XmlElement(name = "Status", type = OrderStatus.class)
    public OrderStatus getStatus() {
        return status;
    }
4

2 回答 2

5

XmlAdapter应该转换Timestampto/fromjava.util.Date而不是java.sql.Date.

于 2013-05-24T21:51:36.227 回答
2

您的适配器需要是这样的:

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;
于 2013-05-24T21:08:06.537 回答