java - com.sun.istack.SAXException2 和 javax.xml.bind.JAXBException 异常

标签 java xml spring hibernate

我正在使用 Spring+Hibernate+cxf 作为 Android 服务。但是当我返回结果时:
return Response.ok(userInfo).header("EntityClass", "testUsetInfo").build();
它显示一个异常:

org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleExceptionStart<br/>
警告: javax.xml.bind.MarshalException<br/>
- with linked exception:<br/>
[com.sun.istack.SAXException2: A cycle is detected in the object graph. This will cause infinitely deep XML<br/>
    TransPackage[ ID=1111111111 ...] -> TransPackageContent[Pkg.Persist_ID=1111111111 ...] -> TransPackage[ ID=1111111111 ...]]

是的,我这样使用它:

@Entity
@org.hibernate.annotations.Proxy(lazy=false)<br/>
@Table(name="TransPackage")<br/>
@XmlRootElement(name="TransPackage")<br/>
public class TransPackage implements Serializable {

    @OneToMany(mappedBy="pkg", targetEntity=TransPackageContent.class)  
    @org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.LOCK}) 
    @org.hibernate.annotations.LazyCollection(org.hibernate.annotations.LazyCollectionOption.TRUE)  
    private java.util.Set<TransPackageContent> content = new java.util.HashSet<TransPackageContent>();

    //getters() and setters();
}
@Entity
@org.hibernate.annotations.Proxy(lazy=false)
@Table(name="TransPackageContent")
@XmlRootElement(name="TransPackageContent")
public class TransPackageContent implements Serializable { @ManyToOne(targetEntity=TransPackage.class, fetch=FetchType.LAZY) @org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.LOCK}) @JoinColumns({ @JoinColumn(name="PackageID", referencedColumnName="ID", nullable=false) }) private TransPackage pkg; //getters() and setters(); }

但是如果我在类之前添加@XmlTransient,它会显示如下异常:

    Caused by: com.sun.istack.SAXException2: class com.htzy.extrace.model.TransPackage以及其任何超类对此上下文都是未知的。
javax.xml.bind.JAXBException: class com.htzy.extrace.model.TransPackage以及其任何超类对此上下文都是未知的。

我能做什么?

非常感谢,我很抱歉我的英语不好!

最佳答案

是的!@XmlTransient 有效,它被添加在 getters() 之前

//like this
@XmlTransient
public TransPackage getPkg(){
    return pkg;
}

关于java - com.sun.istack.SAXException2 和 javax.xml.bind.JAXBException 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30159630/

相关文章:

Java MouseAdapter 没有响应

java - 在 Java 中使用带有接口(interface)的增强型 for 循环?

java - SOAP - 非常大的 XML 响应 - OutOfMemoryError

xml - Golang - 如何将 XML 文件的一部分提取为字符串?

java - 如何使用java spring boot应用程序制作持久的JMS消息?

java - 我如何检查该条目是否已存在于表中或 servlet 中

Java:试验泛型

java - 我的 ScrollView 不显示最后一项(按钮)

java - 如何在 spring 中初始化应用程序?

java - 如何限制spring中的对象数量