WebService 返回JPA 实体类的问题

JPA生成的实体类,例如一对一或一对多关系的时候,常常是双向绑定的,
     * 当使用webService返回这种实体类的时候,特别是返回带有多级嵌套的实体类的时候,会出现如下错误
     *

[com.sun.istack.SAXException2: 在对象图形中检测到循环。这将造成 XML 有无限深度: sharedb.entity.ShrResource[resourceId=1] -> sharedb.entity.ShrCategory[categroyId=2] -> sharedb.entity.ShrResource[resourceId=1]]
        at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:282)
        at com.sun.xml.bind.v2.runtime.BridgeImpl.marshal(BridgeImpl.java:110)
        at com.sun.xml.bind.api.Bridge.marshal(Bridge.java:178)
        at com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:299)
        ... 54 more
产生这个错误的原因是entity类里你中有我我中有你的这种双向绑定造成的,而WebService向客户端发送数据之前要生成相应的XML文档,当分析实体类的时候,将发现这是个“循环”的网络,所以不能产生正确的XML文件,导致错误的产生。要解决这个问题,要么重新构造一个类要么
“断开双向绑定”,最简单的办法是将所有内部对象指向上级的连接全部断开,即设置为null;



你可能感兴趣的:(java,xml,webservice,jpa,sun)