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());
请帮助我,我不知道我做错了什么!!!
答案 0 :(得分:2)
首先,您确定需要使用自定义IDResolver
吗?使用标准JAXB (JSR-222)键注释@XmlID
,外键注释@XmlIDREF
,所有加入都是自动完成的。
UnmarshallerProperties.ID_RESOLVER
是EclipseLink 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的更多信息: