4

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

但是我该如何解决呢?

在我归还对象之前,我可以触及这种关系。对于更大的对象网络来说不是很好和复杂。

我可以扩展我的持久性上下文,所以我的会话在 jaxb 序列化期间仍然处于活动状态。好主意,但是怎么做?

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

桂冠

4

3 回答 3

0

您可以更改关系注释以急切地获取对象。

@OneToOne(fetch=FetchType.EAGER)
于 2014-02-25T14:10:59.797 回答
0

您必须使用@XmlTransient注释来防止关系被序列化。

于 2011-05-13T10:15:52.947 回答
0

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

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

于 2011-05-13T10:25:57.820 回答