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;
分享到:
相关推荐
2. 配置JPA:设置persistence.xml文件,指定数据源、实体类和其他JPA属性。 3. 创建DAO(数据访问对象):利用Spring和JPA提供的接口,编写用于CRUD(创建、读取、更新、删除)操作的DAO方法。 4. 定义服务接口:...
JPA通过提供注解和API来简化实体类与数据库表之间的映射,支持CRUD操作,查询语言(JPQL)以及事务管理。相比传统的JDBC,JPA提供了更高层次的抽象,减少了手动SQL编码的工作量,提高了代码的可读性和可维护性。 ...
如果注解不起作用,可能需要检查persistence.xml配置文件,确保所有必要的属性(如单元名、数据源、实体类等)都正确设置。 在解决这个问题时,开发者可能需要手动创建EntityManagerFactory,但这违背了JPA和依赖...
- **实体bean的源码**:通常包含实体类和映射元数据(如ORM文件或注解),以及可能的DAO层实现。 - **会话bean的源码**:会话bean的实现,包括业务逻辑方法,以及可能的依赖注入。 - **WebService接口与实现**:...
- 定义实体类,使用`@Entity`注解标记,并使用`@Table`指定对应的数据库表。 **4. 创建实体和映射**: - 设计业务对象,用`@Id`、`@Column`等JPA注解进行字段映射。 - 创建DAO(Data Access Object)接口和实现...
- **提供JPA实体**:定义具体的实体类,这些类将映射到数据库表。 - **配置实体**:在JPA透视图中配置实体类,包括其属性和关系。 - **应用前向映射**:将实体类映射到数据库表,完成对象/关系映射的配置。 - **EJB...
例如,可以创建一个实体类,对应数据库表,然后将接口返回的JSON转换为这个实体类实例,再调用`save()`方法将其保存到数据库。 - **测试与调试**:在实际项目中,可以使用Postman这样的工具模拟请求来测试Web ...
ssmCxf压缩包文件很可能是项目源码,包含配置文件、实体类、DAO接口、Mapper XML文件、Service接口及其实现、CXF服务接口和实现类等。在部署运行时,Spring容器会加载这些配置,初始化Bean并管理其生命周期。MyBatis...
1. **定义实体类**:创建JPA实体类,用于存储和检索数据。 2. **创建DAO**:使用JPA的EntityManager在服务方法中实现对数据库的操作。 3. **整合服务**:在JAX-WS或JAX-RS服务中注入DAO,通过调用DAO方法来处理Web...
这样可以方便地操作数据库,比如定义实体类、使用注解声明字段映射,以及编写Repository接口。 9. **安全控制**: Spring Boot提供Spring Security模块来处理认证和授权。开发者可以配置OAuth2、JWT等安全机制,保护...
1. **EJB3的注解**:EJB3引入了如`@Entity`(用于持久化实体类)、`@Table`(定义实体类所对应的数据库表)、`@Id`(标识实体的主键)、`@Stateless`(无状态会话bean)、`@Stateful`(有状态会话bean)、`@...
首先,添加`spring-boot-starter-data-jpa`依赖,然后定义一个实体类(Entity),创建一个继承`JpaRepository`的接口,即可使用CRUD操作。 五、安全控制——Spring Security 对于生产环境的Web服务,安全控制必不...
- 实体类代表数据库表中的行,每个实体类对应一个数据库表。 - 使用`@Entity`标注来标识实体类,并使用`@Id`标注来标识主键字段。 **创建Web接口** - 创建用于展示和操作实体类的Web界面。 - 可以通过Servlet、JSP...
JPA通过实体类(Entity)映射到数据库表,简化了数据库操作,避免了繁琐的手动SQL编写。 3. **有状态会话Bean(SFSB)**:SFSB在Java EE容器中维护了会话状态,可以跟踪用户交互的历史信息。在景区管理系统中,可能...
@EJB注解用于注入其他Bean,而@PersistenceContext和@PersistenceUnit则用于注入JPA实体管理和持久化单元。 3. **Java Persistence API(JPA)集成** EJB 3.0与JPA的整合使得对象/关系映射(ORM)变得更加直观。...
在MyEclipse中,开发者可以利用JPA进行实体类的映射,实现数据的持久化存储。 #### 五、SOA和WebService开发 - **SOA(Service-Oriented Architecture)**:服务导向架构是一种设计方法,旨在创建可重用的服务。在...
- 定义实体类,例如`User`,包含属性如`id`,`name`,`email`等。 - 使用Spring Data JPA或者MyBatis等持久化框架进行数据库操作,定义对应的Repository接口。 4. **CXF配置** - 在Spring配置文件中配置CXF的...
在本项目中,JPA用于简化数据库操作,如创建实体类映射数据库表,使用注解定义字段映射,以及执行CRUD(创建、读取、更新、删除)操作。通过JPA的EntityManager和Query接口,我们可以以面向对象的方式与数据库交互,...
在这个"J2ee5.rar"源码包中,可能包含了使用上述Java EE 5特性的各种示例,比如使用注解配置的EJB、JPA实体类、JSF页面、以及基于JTA的事务控制等。通过研究这些源码,开发者可以深入理解Java EE 5的编程模型和设计...