1
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());

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

4

2 回答 2

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
于 2013-10-28T13:36:12.247 回答
1

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

于 2013-10-26T17:26:53.783 回答