使用accept: application/xml
从端点请求数据时,我不断收到以下错误:
javax.xml.bind.MarshalException - 链接异常:[Exception [EclipseLink-27](Eclipse Persistence Services - 2.6.1.v20150916-55dc7c3): org.eclipse.persistence.exceptions.DescriptorException异常 描述:尝试在对象上调用方法[getSurveyid] [com.on24.ejb.mapping.SurveyQuestion]。实际数量和 形式参数不同,或者解包转换失败。 内部异常:java.lang.IllegalArgumentException:对象不是 声明类映射的实例: org.eclipse.persistence.oxm.mappings.XMLDirectMapping [surveyid - > surveyid /文本()] 描述符:XMLDescriptor(com.on24.ejb.mapping.Survey - > [DatabaseTable(调查)])]
accept: application/json
时响应正常,所以我知道从DB中提取信息不是问题;我只是无法解决这个问题所以任何帮助将不胜感激。
涉及的DTO:
@XmlRootElement
@XmlType (propOrder={"surveyid",
"surveyquestions"})
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class Survey {
private Long surveyid;
private List<SurveyQuestion> surveyquestions;
public Survey(){}
public Long getSurveyid() {
return surveyid;
}
public void setSurveyid(Long surveyid) {
this.surveyid = surveyid;
}
@XmlElementWrapper(name="surveyquestionslist")
@XmlElement(name="surveyquestion")
public List<SurveyQuestion> getSurveyquestions() {
return surveyquestions;
}
public void setSurveyquestions(List<SurveyQuestion> surveyquestions) {
this.surveyquestions = surveyquestions;
}
}
并且
@XmlRootElement
@XmlType (propOrder={"surveyquestionid",
"surveyquestion",
"surveyanswers"})
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class SurveyQuestion {
private Long surveyquestionid;
private String surveyquestion;
private List<String> surveyanswers;
public SurveyQuestion(){}
public Long getSurveyquestionid() {
return surveyquestionid;
}
public void setSurveyquestionid(Long surveyquestionid) {
this.surveyquestionid = surveyquestionid;
}
public String getSurveyquestion() {
return surveyquestion;
}
public void setSurveyquestion(String surveyquestion) {
this.surveyquestion = surveyquestion;
}
@XmlElementWrapper(name="surveyanswerslist")
@XmlElement(name="surveyanswer")
public List<String> getSurveyanswers() {
return surveyanswers;
}
public void setSurveyanswers(List<String> surveyanswers) {
this.surveyanswers = surveyanswers;
}
}
我已经尝试了几次从重构到使用XmlAccessType.PUBLIC_MEMBER, XmlAccessType.FIELD, XmlAccessType.PROPERTY
的想法,但没有成功。
我真的很想知道为什么会产生这个错误。如果需要更多信息,我会根据要求添加,谢谢。