我正在与JBoss合作。我创建了一个简单的JAX-RS Web服务,该服务从数据库中检索JPA实体并将其返回给用户。一旦与另一个实体建立关系(@OneToOne),我就会得到LazyInitializationException。原因很简单:该关系不是由JPA(延迟加载)初始化的,并且当jaxb尝试对其进行序列化时,一切都会中断。

但是我该如何解决呢?

在归还物品之前,我可以碰一下这种关系。对于更大的对象网络而言,它不是很好而且很复杂。

我可以扩展Persistence上下文,因此我的会话在jaxb序列化期间仍然处于活动状态。好主意,但是如何?

有没有一种标准的最佳实践方法来解决我的问题。

劳雷斯

最佳答案

在处理JPA实体时,您需要确保注释的是属性(访问器),而不是字段(实例变量)。

以下是使用JAX-RS,JAXB和JPA创建JAX-RS服务的示例:


Part 1 - The Database
Part 2 - Mapping the Database to JPA Entities
Part 3 - Mapping JPA entities to XML (using JAXB)
Part 4 - The RESTful Service
Part 5 - The Client

10-07 18:20