背景
我有一个Root元素类,它包含类java.sql.Timestamp
的变量,我希望JAXB从该变量创建xml元素。
我尝试了什么
import java.sql.Date;
import java.sql.Timestamp;
import 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(){if(endDate == null)
retrieveInfo();
return endDate;
}
问题
我仍然得到这个例外
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;
}
答案 0 :(得分:5)
您的XmlAdapter
应将Timestamp
转换为java.util.Date
而不是java.sql.Date
。
答案 1 :(得分: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;