복붙노트

[SPRING] Spring OpenSessionInViewInterceptor가 작동하지 않습니다.

SPRING

Spring OpenSessionInViewInterceptor가 작동하지 않습니다.

나는 뷰가 렌더링 될 때 최대 절전 모드 및 게으른 로딩과 관련하여 유명한 문제를 안고있었습니다 .... 많은 사람들이 말했듯이, 유일한 두 가지 해결책은 다음과 같습니다.

후자는 바람직한 IMO입니다. 어쨌든이 인터셉터가 전혀 실행되지 않는지 나는 확신하지 못한다. (실제로 나는 같은 Lazy 로딩 예외를 얻었고 아무런 변화도 없었다.)

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: it.jsoftware.jacciseweb.beans.Listino.prodotti, no session or session was closed

간단한 어노테이션 기반 URL 매핑을 사용하고 있으므로 Spring 3 용 문서를 읽으면서 servlet-context.xml에 다음과 같이 사용하고 있습니다.

<bean id="handlerMapping"
        class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <!-- <property name="order" value="2" /> -->
        <property name="interceptors">
            <list>
                <ref bean="openSessionInViewInterceptorInst" />
            </list>
        </property>
    </bean>

어느 트릭을 만들어야합니다. 그러나 작동하지 않고 예외가 발생합니다. 내 요격기가 발사되도록하려면 어떻게해야합니까? 어떻게 해결할 수 있습니까?

해결법

  1. ==============================

    1.@RequestMapping 주석을 사용하고 있습니까? 바로 기억한다면, URL Bean에 인터셉터를 넣는 것과 관련된 문제가있었습니다. Spring 3.0에서는 인터셉터를 다음과 같이 정의 할 수있다.

    @RequestMapping 주석을 사용하고 있습니까? 바로 기억한다면, URL Bean에 인터셉터를 넣는 것과 관련된 문제가있었습니다. Spring 3.0에서는 인터셉터를 다음과 같이 정의 할 수있다.

    <mvc:interceptors>
        <bean class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
            <property name="sessionFactory">
                <ref local="sessionFactory" />
            </property>
        </bean>
    </mvc:interceptors>
    

    sessionFactory가 SessionFactory 빈에 대한 참조라고 가정합니다.

    mvc 네임 스페이스도 포함시켜야합니다.

    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
    
  2. ==============================

    2.를 사용해보십시오.

    를 사용해보십시오.

    그건 그렇고, @ 트랜잭션은 다른 것입니다 - 당신의 콜렉션이 "뷰"에서 작동하지 않습니다. 어노테이션 된 메소드 (그리고 메소드가 호출하는 메소드)에 대한 트랜잭션 (및 세션)

  3. ==============================

    3.Spring과 Hibernate와 함께 Struts2를 사용한다면, OpenSesisonInViewFilter를 사용하여 web.xml에 할당 해보십시오.

    Spring과 Hibernate와 함께 Struts2를 사용한다면, OpenSesisonInViewFilter를 사용하여 web.xml에 할당 해보십시오.

  4. from https://stackoverflow.com/questions/4992772/spring-opensessioninviewinterceptor-doesnt-work by cc-by-sa and MIT license