java - 仅在jsp中 javax.el.E​​LException : org. hibernate.LazyInitializationException:无法初始化代理 - 无 session

标签 java spring hibernate jsp

你好,我有一个网络应用程序 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.E​​LException : org. hibernate.LazyInitializationException:无法初始化代理 - 无 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20645722/

相关文章:

java - 我不明白我的输出。为什么我会得到同样的东西两次?

java - Spring Boot多部分文件上传集成测试-空文件

java - Hibernate + spring 版本兼容性

java - 在 Java 构造函数中导入文本文件

java - 使用 Comparator 排序时,Content 已经有一个现有的父级

java - 谷歌 Collection 中是否有一个字符串来映射拆分器

java - Spring MVC 中的 jackson

java - 使用 FactoryBean 创建泛型实例时,Spring 自动接线无法泛型

Java JDBC事务性多表插入

java - 使用与 Hibernate 持久性提供程序相同的代码库生成 Oracle 和 MYSQL 的序列