出现延时加载例外,原因是实体bean从业务bean方法返回时,session已经关闭,解决方案有3个
第一:设置@OneToMany中的fetch=FetchType.EAGER
第二:在业务方法返回Order前访问多方的属性集合,如下:
public Order getOrder(String orderid){
Order order = em.find(Order.classs, orderid);
order.getOrderItems().size();
return order;
}
第三:使用join fetch查询:
select o from Order o inner join fetch o.orderItems
第一:设置@OneToMany中的fetch=FetchType.EAGER
第二:在业务方法返回Order前访问多方的属性集合,如下:
public Order getOrder(String orderid){
Order order = em.find(Order.classs, orderid);
order.getOrderItems().size();
return order;
}
第三:使用join fetch查询:
select o from Order o inner join fetch o.orderItems
reference:
http://godzwj.iteye.com/blog/398619
本文介绍了在EJB中遇到的延迟加载例外问题及其三种解决方案。包括调整@OneToMany的fetch策略为EAGER、提前访问多方属性集合以及使用join fetch进行查询。
2890

被折叠的 条评论
为什么被折叠?



