`
lztang
  • 浏览: 3082 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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;



0
0
分享到:
评论

相关推荐

    WebService(Axis+spring+jpa)

    2. 配置JPA:设置persistence.xml文件,指定数据源、实体类和其他JPA属性。 3. 创建DAO(数据访问对象):利用Spring和JPA提供的接口,编写用于CRUD(创建、读取、更新、删除)操作的DAO方法。 4. 定义服务接口:...

    EJB,JPA,JSF,UML,WebService以及图形界面代码

    JPA通过提供注解和API来简化实体类与数据库表之间的映射,支持CRUD操作,查询语言(JPQL)以及事务管理。相比传统的JDBC,JPA提供了更高层次的抽象,减少了手动SQL编码的工作量,提高了代码的可读性和可维护性。 ...

    基于jersey v2.10的webservice核心框架

    如果注解不起作用,可能需要检查persistence.xml配置文件,确保所有必要的属性(如单元名、数据源、实体类等)都正确设置。 在解决这个问题时,开发者可能需要手动创建EntityManagerFactory,但这违背了JPA和依赖...

    EJB3.0容器模型的WEB服务-WebService

    - **实体bean的源码**:通常包含实体类和映射元数据(如ORM文件或注解),以及可能的DAO层实现。 - **会话bean的源码**:会话bean的实现,包括业务逻辑方法,以及可能的依赖注入。 - **WebService接口与实现**:...

    xfire spring jpa搭建环境

    - 定义实体类,使用`@Entity`注解标记,并使用`@Table`指定对应的数据库表。 **4. 创建实体和映射**: - 设计业务对象,用`@Id`、`@Column`等JPA注解进行字段映射。 - 创建DAO(Data Access Object)接口和实现...

    ejb web service sap

    - **提供JPA实体**:定义具体的实体类,这些类将映射到数据库表。 - **配置实体**:在JPA透视图中配置实体类,包括其属性和关系。 - **应用前向映射**:将实体类映射到数据库表,完成对象/关系映射的配置。 - **EJB...

    webServiceDemo.zip

    例如,可以创建一个实体类,对应数据库表,然后将接口返回的JSON转换为这个实体类实例,再调用`save()`方法将其保存到数据库。 - **测试与调试**:在实际项目中,可以使用Postman这样的工具模拟请求来测试Web ...

    spring4.1+mybatis+CXF最新webservice DEMO

    ssmCxf压缩包文件很可能是项目源码,包含配置文件、实体类、DAO接口、Mapper XML文件、Service接口及其实现、CXF服务接口和实现类等。在部署运行时,Spring容器会加载这些配置,初始化Bean并管理其生命周期。MyBatis...

    JAX-WS-and-JAX-RS-Web-Services-integrated-with-JPA

    1. **定义实体类**:创建JPA实体类,用于存储和检索数据。 2. **创建DAO**:使用JPA的EntityManager在服务方法中实现对数据库的操作。 3. **整合服务**:在JAX-WS或JAX-RS服务中注入DAO,通过调用DAO方法来处理Web...

    springboot2-webservice:使用Spring Boot 2开发Web服务

    这样可以方便地操作数据库,比如定义实体类、使用注解声明字段映射,以及编写Repository接口。 9. **安全控制**: Spring Boot提供Spring Security模块来处理认证和授权。开发者可以配置OAuth2、JWT等安全机制,保护...

    Manning EJB3 in Action

    1. **EJB3的注解**:EJB3引入了如`@Entity`(用于持久化实体类)、`@Table`(定义实体类所对应的数据库表)、`@Id`(标识实体的主键)、`@Stateless`(无状态会话bean)、`@Stateful`(有状态会话bean)、`@...

    freelec-springboot2-webservice

    首先,添加`spring-boot-starter-data-jpa`依赖,然后定义一个实体类(Entity),创建一个继承`JpaRepository`的接口,即可使用CRUD操作。 五、安全控制——Spring Security 对于生产环境的Web服务,安全控制必不...

    J2EE5 NetBeans教程

    - 实体类代表数据库表中的行,每个实体类对应一个数据库表。 - 使用`@Entity`标注来标识实体类,并使用`@Id`标注来标识主键字段。 **创建Web接口** - 创建用于展示和操作实体类的Web界面。 - 可以通过Servlet、JSP...

    吉林大学JavaEE景区管理系统大作业

    JPA通过实体类(Entity)映射到数据库表,简化了数据库操作,避免了繁琐的手动SQL编写。 3. **有状态会话Bean(SFSB)**:SFSB在Java EE容器中维护了会话状态,可以跟踪用户交互的历史信息。在景区管理系统中,可能...

    ejb-3_0最新规范

    @EJB注解用于注入其他Bean,而@PersistenceContext和@PersistenceUnit则用于注入JPA实体管理和持久化单元。 3. **Java Persistence API(JPA)集成** EJB 3.0与JPA的整合使得对象/关系映射(ORM)变得更加直观。...

    MyEclipse开发教程 完整版 pdf

    在MyEclipse中,开发者可以利用JPA进行实体类的映射,实现数据的持久化存储。 #### 五、SOA和WebService开发 - **SOA(Service-Oriented Architecture)**:服务导向架构是一种设计方法,旨在创建可重用的服务。在...

    JAX-RS cxf web服务 rest简单增删改查 集成spring webService

    - 定义实体类,例如`User`,包含属性如`id`,`name`,`email`等。 - 使用Spring Data JPA或者MyBatis等持久化框架进行数据库操作,定义对应的Repository接口。 4. **CXF配置** - 在Spring配置文件中配置CXF的...

    j2ee的课程设计

    在本项目中,JPA用于简化数据库操作,如创建实体类映射数据库表,使用注解定义字段映射,以及执行CRUD(创建、读取、更新、删除)操作。通过JPA的EntityManager和Query接口,我们可以以面向对象的方式与数据库交互,...

    J2ee5源码包111

    在这个"J2ee5.rar"源码包中,可能包含了使用上述Java EE 5特性的各种示例,比如使用注解配置的EJB、JPA实体类、JSF页面、以及基于JTA的事务控制等。通过研究这些源码,开发者可以深入理解Java EE 5的编程模型和设计...

Global site tag (gtag.js) - Google Analytics