Jaxb循环(无限循环)编组错误 - MOXy和Spring OXM

时间:2015-12-23 13:56:21

标签: java xml jaxb moxy

我收到了一个JAXB编组错误(循环无限循环) - 发布在这个问题的末尾。

我知道这是由于双向对象引用而我在测试用例中使用了EclipseLink MOXy JAXB marshaller来解析这个指定ID和IDREF并使用包含

的jaxb.properties文件指定了JAXB提供程序
CREATE TABLE Bk_Jobs ( Job_ID Int (20), 
          Job_Title Varchar (255), 
          Min_Salary Decimal (25), 
          Max_Salary Decimal (25) 
);

然而,生产代码使用Spring OXM,我无法看到如何使用它来实现类似的结果。

我添加了一个jaxb.properties文件,但它没有被使用 - 我知道这是因为我添加了一个空文件作为测试并且它没有抱怨(就像在原型测试用例中那样)。

如何指定要使用的JAXB编组程序? 它似乎正在使用:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

而我的工作测试用例使用:

org.eclipse.persistence.oxm.XMLMarshaller

例外:     javax.xml.bind.MarshalException       - 链接异常:     [例外[EclipseLink-25037](Eclipse持久性服务 -
    2.6.1.v20150916-55dc7c3):
    的 org.eclipse.persistence.exceptions.XMLMarshalException     异常描述:在对象图中检测到循环。这将     导致无限循环:
    在org.eclipse.persistence.jaxb.JAXBMarshaller.marshal     (JAXBMarshaller.java:487)

1 个答案:

答案 0 :(得分:0)

好的 - 解析我指定的(在Spring OXM文件中)

<xml-inverse-reference mapped-by="myObject" 
    <xml-element xml-idref="true" 

我只添加了xml-idref =&#34; true&#34;关系