你好,我有一个网络应用程序 spring+hibernate
我在 jsp 中尝试读取产品的状态
<p>${product.state }</p>
在我的 POJO 类中
public class Product
{
...
public String getState(){
if(this.type == 6)
return "A";
if(propertyB.getRole()== 15)
return "B"
}
}
当产品想要访问另一个实体(如 propertyB
)的属性时,会抛出异常
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
因为我用LEFT JOIN FETCH
更改了查询
FROM Product p LEFT JOIN FETCH p.propertyB b
当我在 Junit 测试中获得我的产品列表时有效
当我在 jsp 文件中获取产品列表时抛出
javax.el.ELException: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
当我在 Controller 中获得产品列表时,例如
for(Product p: listOfProducts){
log.put(p.getState());
}
工作正常!!
但只在jsp中不起作用为什么?
最佳答案
使用OpenEntityManagerInViewFilter 。它是一个过滤器,它将数据库 session 附加到呈现 jsp 的线程。
您可以像设置任何其他 J2EE 过滤器一样在 web.xml 中设置它。
关于java - 仅在jsp中 javax.el.ELException : org. hibernate.LazyInitializationException:无法初始化代理 - 无 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20645722/