使用自定义IDResolver的属性异常

时间:2013-10-26 16:44:01

标签: java jaxb unmarshalling

javax.xml.bind.PropertyException: name: eclipselink.id-resolver value:   com.persistence.MyIDResolver@4ab34646
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.setProperty(AbstractUnmarshallerImpl.java:332)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.setProperty(UnmarshallerImpl.java:444)

伙计们,我使用以下代码行获取此属性异常:

jaxbUnmarshaller.setProperty(UnmarshallerProperties.ID_RESOLVER, new MyIDResolver());

请帮助我,我不知道我做错了什么!!!

2 个答案:

答案 0 :(得分:2)

首先,您确定需要使用自定义IDResolver吗?使用标准JAXB (JSR-222)键注释@XmlID,外键注释@XmlIDREF,所有加入都是自动完成的。

UnmarshallerProperties.ID_RESOLVEREclipseLink JAXB (MOXy)的属性,您需要确保使用MOXy作为JAXB提供程序才能使用它。

如果您使用的是JDK中包含的JAXB版本,则可以使用以下属性:

com.sun.xml.internal.bind.IDResolver

如果您使用的是JAXB参考实现,则可以使用以下属性:

com.sun.xml.bind.IDResolver

答案 1 :(得分:1)

看起来您正在尝试在Sun的JAXB实现(目前是Oracle)上设置EclipseLink属性(org.eclipse.persistence.jaxb.UnmarshallerProperties)。我不是EclipseLink的专家,但常量的值表明你应该使用MOXy(另一个JAXB实现)。有关如何配置MOXy的更多信息: