这是任何方式与@ XmlDescriminatorNode/@ XmlDescrimintatorValue注释旁边XML来解组,或任何解决方法:异常:“缺少数据库行[UnmarshalRecordImpl()]中的类指示符字段”。解组使用的EclipseLink JAXB(莫西)XML时
<assets>
<asset type="full">
<data_file role="source">
<locale name="ru-RU"/>
</data_file>
<data_file role="extension">
<locale name="ru-RU"/>
</data_file>
<data_file>
<locale name="ru-RU"/>
</data_file>
</asset>
</assets>
我的映射类:
@XmlRootElement(name="data_file")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlDiscriminatorNode("@role")
public abstract class BaseDataFile implements Serializable {
@XmlPath("@role")
@XmlAttribute(name = "role")
private String role;
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
}
@XmlRootElement(name="data_file")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlDiscriminatorValue("source")
public class SourceDataFile extends BaseDataFile {
}
@XmlRootElement(name="data_file")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlDiscriminatorValue("source")
public class SourceDataFile extends BaseDataFile {
}
@XmlRootElement(name="data_file")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlDiscriminatorValue("extension")
public class SourceDataFile extends BaseDataFile {
}
@XmlRootElement(name="asset")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlDiscriminatorNode("@type")
public abstract class BaseAsset implements Serializable {
@XmlPath("@type")
@XmlAttribute(name = "type")
private String type;
@XmlPath("data_file")
private List<BaseDataFile> dataFiles;
public List<BaseDataFile> getDataFiles() {
return dataFiles;
}
public void setDataFiles(List<BaseDataFile> dataFiles) {
this.dataFiles = dataFiles;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
错误occures如果XML containes要素如下,没有“类型”属性:
<data_file>
<locale name="ru-RU"/>
</data_file>
在此先感谢
感谢您的帮助。 – 2013-03-26 08:05:22
对不起混淆,但是如果handleEvent方法返回true,那么在解组之后,我在实体中有无效的值。所以,我仍在等待解决这种情况。 – 2013-03-26 17:35:14
@EvgeniyFitsner - 您可以使用以下错误跟踪我们在此问题上的进展:http://bugs.eclipse.org/404269 – 2013-03-26 17:47:15