没有懒惰地在rest webservice中初始化一个角色集合

时间:2014-02-17 17:23:23

标签: rest jpa ejb

我试过这段代码

  @GET
@Produces("application/xml")
public Customer getMsg() {
    Customer cus =  em.find(Customer.class,1);
    return cus;
}

Customer类与地址实体有一对多的关系。 但当我试图从我的ajax客户端cals ws它给我这个错误?怎么解决这个问题。 应用程序在jboss-eap-6.2上运行,该类是无状态bean。

JBWEB000065: HTTP Status 500 - org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: org.test.Customer.addresslist, could not initialize proxy - no Session

2 个答案:

答案 0 :(得分:0)

您可以将fetchType更改为EAGER,或者您需要在实体仍然附加时检索地址,这意味着您需要在返回之前以该方法检索它。如果您使用的是JPA 2.1,那么您可以使用实体图

答案 1 :(得分:0)

考虑在地址字段中应用 @XmlTransient ,您获得的错误是因为当您在Marshall使用访问者时,您的属性为LAZY,因此实体的状态不会被管理方法,它尝试加载地址,因为你在事务之外发生错误,所以考虑和@XmlTransient避免马歇尔尝试使用地址。

public class Customer

 @XmlTransient
 public Address addresslist

申请你正在使用Jaxb,如果不考虑搜索类似的东西,以避免在你的实体中使用某些字段。