我试过这段代码
@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
答案 0 :(得分:0)
您可以将fetchType更改为EAGER,或者您需要在实体仍然附加时检索地址,这意味着您需要在返回之前以该方法检索它。如果您使用的是JPA 2.1,那么您可以使用实体图
答案 1 :(得分:0)
考虑在地址字段中应用 @XmlTransient ,您获得的错误是因为当您在Marshall使用访问者时,您的属性为LAZY,因此实体的状态不会被管理方法,它尝试加载地址,因为你在事务之外发生错误,所以考虑和@XmlTransient避免马歇尔尝试使用地址。
public class Customer
@XmlTransient
public Address addresslist
申请你正在使用Jaxb,如果不考虑搜索类似的东西,以避免在你的实体中使用某些字段。