Spring MVC+hibernate 使用@ResponseBody返回json报500 (Internal Server Error)

后台不报错。在返回给前台页面的时候报错。


大概意思是返回json的时候里面有一个一类类型,但是没有序列化。然后将返回的对象里面的类型改成了普通的就行了

具体如何解决这个错误还望指点。网上找的据说是需要配置com.fasterxml.jackson.databind.ObjectMapper里面的SerializationFeature.FAIL_ON_EMPTY_BEANS 为false

还需要在xml文件里面配置

<!-- Spring MVC 配置 -->
<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/plain;charset=UTF-8</value>
                    <value>text/html;charset=UTF-8</value>
                </list>
            </property>
        </bean>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>application/json; charset=UTF-8</value>
                    <value>application/x-www-form-urlencoded; charset=UTF-8</value>
                </list>
            </property>
            <!-- 配置 objectMapper 为我们自定义扩展后的 CustomMapper -->
            <property name="objectMapper">
                <bean class="com.king.framework.jackson.CustomMapper">
                </bean>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

后期解决问题补充:

因为jsonplugin用的是java的内审机制.hibernate会给被管理的pojo加入一个hibernateLazyInitializer属性,jsonplugin会把hibernateLazyInitializer也拿出来操作,并读取里面一个不能被反射操作的属性就产生了这个异常.  
hibernate对象懒加载,json序列化失败,因为懒加载这个对象属性只是一个代理对象,如果json直接当作一个存在的属性去序列化就会出现错误
需要在实体类上加上
@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"})
java转json hibernate关联关系造成的无限递归问题,value里添加映射字段
@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler","historyArcticlesLinkMapping"})
我是在类型加上的
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" })
或者在属性类型上面加上注解@JsonIgnore进行忽略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值