Java 在Hibernate和JSF2中使用OpenSessionInviewWinterCeptor

Java 在Hibernate和JSF2中使用OpenSessionInviewWinterCeptor,java,hibernate,spring,jsf,interceptor,Java,Hibernate,Spring,Jsf,Interceptor,我正在用Hibernate、Spring和JSF2构建一个只使用注释的应用程序。如何利用Spring中的OpenSessionInviewWinterCeptor捕获任何可能在bean中打开的hibernate会话? 我试图优雅地解决一个常见的问题:“未能延迟初始化角色集合:your.Class.association未关闭任何会话或会话”。当尝试从另一个POJO(DAO检索的标记实体,其中包含我要读取的项目对象列表)中尚未初始化的POJO列表中读取时出现的问题。我发现了这个: 但是在我的环

我正在用Hibernate、Spring和JSF2构建一个只使用注释的应用程序。如何利用Spring中的OpenSessionInviewWinterCeptor捕获任何可能在bean中打开的hibernate会话?

我试图优雅地解决一个常见的问题:“未能延迟初始化角色集合:your.Class.association未关闭任何会话或会话”。当尝试从另一个POJO(DAO检索的标记实体,其中包含我要读取的项目对象列表)中尚未初始化的POJO列表中读取时出现的问题。我发现了这个:

但是在我的环境中没有使用它。


请提供详细答案,因为互联网上充斥着模糊不清、毫无帮助的教程。如果提供一个循序渐进的指导,我也会非常乐意找到一个替代解决方案

事实证明,它非常简单,比拦截器、AOP和互联网上随处可见的无数古怪事物要简单得多。 将这个片段(请注意我在第二个init参数中的小注释)插入到web.xml中,以忘记所有烦恼

<!-- Hibernate OpenSession Filter -->
<filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    <init-param>
        <param-name>singleSession</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>sessionFactoryBeanName</param-name>
        <param-value>***WhateverTheNameOfYourSessionFactoryBeanIs***</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

冬眠过滤器
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
单一会话
真的
sessionFactoryBeanName
***你的会议工厂是什么样子的***
冬眠过滤器
/*

这对我不起作用。可能是因为我使用的是Hibernate4,我不知道:S