我'm using the below dependencies and I'也注册了Hibernate4Module,虽然我得到 lazy initialization exception 用于延迟加载实体 .

Spring :  4.1
  Hibernate : 4.3
  jackson-datatype-hibernate4 : 2.4.2
  jackson-databind : 2.4.2

我的ObjectMapper子类

public class HibernateAwareObjectMapper extends ObjectMapper {
    public HibernateAwareObjectMapper() {
        registerModule(new Hibernate4Module());
     }
    }

和我在应用程序上下文文件中的配置

<mvc:annotation-driven>
      <mvc:message-converters>
          <!-- Use the HibernateAware mapper instead of the default -->
          <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
              <property name="objectMapper">
                  <bean class="utils.HibernateAwareObjectMapper" />
              </property>
          </bean>
      </mvc:message-converters>
  </mvc:annotation-driven>



public class ProductUsageViewModel {
 private ProductUsage productUsage;

 public String getCollectionNumber() {
   return productUsage.getProduct().getCollectionNumber();
 }


// some other methods 

}

@Entity
@Audited
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")
public class Product implements ModificationTracker {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(nullable = false)
  private Long id;

  // A product may not have a corresponding sample. Some products may be
  // imported from another location. In such a case the corresponding collection
  // field is allowed to be null.
  @CollectedSampleExists
  @ManyToOne(optional=true, fetch=FetchType.LAZY)
  private CollectedSample collectedSample;

  public String getCollectionNumber() {
    if (collectedSample == null)
      return null;
    return collectedSample.getCollectionNumber();
  }

 }






 @Entity
    public class CollectedSample implements ModificationTracker, Comparable<CollectedSample> {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(nullable=false)
  private Long id;


  @Column(length=20, unique=true)
  @Index(name="collectedSample_collectionNumber_index")
  private String collectionNumber;

  public String getCollectionNumber() {
    return collectionNumber;
  }


}

Stack trace

org.springframework.http.converter.HttpMessageNotWritableException:无法写入内容:无法初始化代理 - 无会话(通过引用链:java.util.HashMap [“usage”] - > viewmodel.ProductUsageViewModel [“collectionNumber”]);嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:无法在org.springframework初始化代理 - 没有Session(通过引用链:java.util.HashMap [“usage”] - > viewmodel.ProductUsageViewModel [“collectionNumber”]) .http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:238)org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:208)org.springframework.web.servlet.mvc.method.annotation .AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:153)在org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:138)在org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue (HandlerMethodReturnValueHandlerComposite.java:71)org.springframework.web.servlet.mvc.method.annotation.ServletI nvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:122)位于org.springframework.web.servlet.mvc.method.annotation的org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781) . org.springframework.web.servle.DispatcherServlet.doDispatch(DispatcherServlet.java: 943)atg.springframework.web.servlet.DispatcherServ . .doPost(FrameworkServlet.java:863)位于j的aav.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)的javax.servlet.http.HttpServlet.service(HttpServlet.java:646)位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)的avax.servlet.http.HttpServlet.service(HttpServlet.java:727)位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain . java:208)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)atg.apache.catalina位于org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330).core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) (FilterSecurityInterceptor.java:118)org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342) )在org.springfram位于org.springframework.security.web.session的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)的ework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) . SessionManagementFilter.doFilter(SessionManagementFilter.java:103)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java: 113)在org.springframework.security的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) .web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)at atorg.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)位于org.springframework.security.web的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342) . 认证.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)位于org.springframework.security.web.context.request.async的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342) . 位于org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)中的WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)at org.springframework.security.web.FilterChainProxy $ VirtualFilte rChain.doFilter(FilterChainProxy.java:342)org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)at org .springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain .java:241)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at CORSFilter.doFilter(CORSFilter.java:25)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain . java:241)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)at org.apache.catalina.core .StandardContextValve.invo keg(StandardContextValve.java:122)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)org.apache位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)的.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java) :116)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)at org.apache.coyote.AbstractProtocol $位于java的java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)的org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:313)中的AbstractConnectionHandler.process(AbstractProtocol.java:607) . java.lang.Thread.run(未知来源)中的util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)引起:com.fa sterxml.jackson.databind.JsonMappingException:无法初始化代理 - 没有Session(通过引用链:java.util.HashMap [“usage”] - > viewmodel.ProductUsageViewModel [“collectionNumber”])

任何人都可以帮我摆脱那个例外,请...