Spring @ResponseBody Json Cyclic Reference

San*_*nne 5 java spring spring-mvc jackson bidirectional-relation

我试图使用Spring 3.x @ResponseBody生成json/xml响应,当有很多关系b/w表时我使用JPA 2.0 ORM然后json抛出LazyInitializationException

如果我给出"渴望获取",那么它将进入循环引用.

Eug*_*sky 3

我最近遇到了类似的问题:杰克逊 - 具有双向关系的实体的序列化(避免循环)

所以解决方案是升级到Jackson 2.0,并在类中添加以下注释:

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, 
                  property = "@id")
public class SomeEntityClass ...
Run Code Online (Sandbox Code Playgroud)

那么问题是 Spring 不能与 Jackson 2.0 一起工作。此问题已通过以下方式解决:

<bean id="jacksonMessageConverter"
          class="own.implementation.of.MappingJacksonHttpMessageConverter"/>

<bean class="org.springframework.web.servlet.mvc
             .annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="jacksonMessageConverter"/>
            </list>
        </property>
        <property name="requireSession" value="false"/>
    </bean>
Run Code Online (Sandbox Code Playgroud)

own.implementation.of.MappingJacksonHttpMessageConverter是基于此:

http://www.jarvana.com/jarvana/view/org/springframework/spring-web/3.0.0.RELEASE/spring-web-3.0.0.RELEASE-sources.jar!/org/springframework/http/converter /json/MappingJacksonHttpMessageConverter.java?format=ok

但请使用 Jackson 2.0 中的 ObjectMapper 和其他 Jackson 类,而不是 Jackson 1。*