我正在使用JBoss。我创建了一个简单的JAX-RS Web服务,它从数据库中检索JPA Entitiy并将其返回给用户。一旦我与另一个实体建立了关系(@OneToOne),我就会得到一个LazyInitializationException。原因很简单:JPA(延迟加载)没有初始化关系,当jaxb尝试序列化时,一切都会中断。
但我该如何解决这个问题?
在我返回物体之前,我可以触摸这种关系。对于更大的对象网络来说,这并不好看和复杂。
我可以扩展我的持久化上下文,所以我的会话在jaxb序列化期间仍处于活动状态。好主意,但是怎么样?
有没有一种标准的最佳实践方法来解决我的问题。
Laures
答案 0 :(得分:0)
您必须使用@XmlTransient
注释来阻止关系序列化。
答案 1 :(得分:0)
在处理JPA实体时,您需要确保注释属性(访问者)而不是字段(实例变量)。
以下是使用JAX-RS,JAXB和JPA创建JAX-RS服务的示例:
答案 2 :(得分:0)
您可以更改关系注释以急切地获取对象。
@OneToOne(fetch=FetchType.EAGER)