当前位置: 首页 > 知识库问答 >
问题:

com.sun.istack.saxException2和javax.xml.bind.jaxbException的异常

太叔京
2023-03-14

我将Spring+Hibernate+CXF用于Android服务。但当我返回结果:
返回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(); }
    Caused by: com.sun.istack.SAXException2: class com.htzy.extrace.model.TransPackage以及其任何超类对此上下文都是未知的。
javax.xml.bind.JAXBException: class com.htzy.extrace.model.TransPackage以及其任何超类对此上下文都是未知的。

我能做什么?

非常感谢,很抱歉我的英语太差了!

共有1个答案

宗政松
2023-03-14

是的!!@XMLTransient工作,它是在getters()之前添加的

//like this
@XmlTransient
public TransPackage getPkg(){
    return pkg;
}
 类似资料:
  • 问题内容: 我正在尝试通过REST Web服务传递对象。以下是我的课程,使用一些示例代码说明了我需要的功能。 REST Web服务类方法 反应等级 部门课 当我在其余Web服务类中调用getDepartments方法时,它将返回以下异常。但是,如果我在Response类中将 有效负载的 Object 类型更改为 Department ,它将正确返回json响应。但是由于我需要将此Response类

  • 问题内容: 我正在将项目从版本1.x升级到jaxb 2.2.7。 我有一段时间会运行该应用程序,但是在一些响应中我看到了这一点: 在jaxb 1.0中运行良好。我不知道可能是什么问题。 这是xsd的摘录(我不能更改,因为客户端正在使用它): 有什么建议? 问题答案: 问题原来是匿名复杂类型的精心嵌套。 通过如下将它们分开,问题就解决了。另外,我获得了更多可重用的代码。

  • 问题内容: 假设我们有这个问题 扩展和覆盖,但鉴于实现现在会引发异常。由于覆盖方法不能引发新的异常,因此不会编译。 最好的解决方案是什么? 将所需的异常传播到。对我来说,这是反对封装,继承和一般OOP的(可能会引发永远不会发生的异常)。 使用呢?此解决方案不会将传播到,但是Oracle文档和其他来源指出,当“客户端代码无法执行任何操作”时,应使用异常类。并非这种情况,此异常将对恢复blablabl

  • 我有一个列类型为text[]的表。 我正在使用dsl和jooq以及H2。该表包含字符串值数组,如下所示: Table是使用jooq生成的java类。当我执行以下查询并打印结果时: 它把上面的表格数据打印出来。 但是当我执行时: 它给我一个例外: 它执行正常PostgreSQL,但给我错误在这个查询与H2。 我如何让它与H2一起工作?

  • Supporting Functions # traceback_example.py import traceback import sys def produce_exception(recursion_level=2): sys.stdout.flush() if recursion_level: produce_exception(recursion_l

  • 问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。