SpringMVC杂记(七) Jackson与Hibernate LazyLoding无法正常工作解决办法
SpringMVC杂记(七) Jackson与Hibernate LazyLoding无法正常工作解决办法
1) 如下代码
@Controller@RequestMapping("/just")public class TestController {@Resourceprivate EmployeeDao dao;@ResponseBody@RequestMapping("/test")public List<Employee> test() {return dao.findAllEmployees();}}如果dao查找出来的列表中包含不完整的Entity最终SpringMVC会出现一个内部异常。
2) 有人写了一个插件专门来解决这个问题。
<dependency> <groupId>com.fasterxml</groupId> <artifactId>jackson-module-hibernate</artifactId> <version>0.7.0</version></dependency>
这里包含一个Moduel("com.fasterxml.jackson.module.hibernate.HibernateModule")实现,就像所有Jackson标准的Model注册一下就可以用了。
ObjectMapper mapper = new ObjectMapper();mapper.registerModule(new HibernateModule());
3) 可以自己写一个ObjectMapper的子类注册给"org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"
package com.wicresoft.jpo.demo.json;import org.codehaus.jackson.map.ObjectMapper;import org.codehaus.jackson.map.SerializationConfig.Feature;import com.fasterxml.jackson.module.hibernate.HibernateModule;public class HibernateAwareObjectMapper extends ObjectMapper {public HibernateAwareObjectMapper() {HibernateModule hm = new HibernateModule();registerModule(hm);configure(Feature.FAIL_ON_EMPTY_BEANS, false);}public void setPrettyPrint(boolean prettyPrint) {configure(Feature.INDENT_OUTPUT, prettyPrint);}}<mvc:annotation-driven conversion-service="conversion-service" validator="validator"><mvc:message-converters register-defaults="false"><bean /><bean /><bean /><!-- 修改为以下配置即可 --><bean value="true" /></bean></property></bean><bean /><bean /></mvc:message-converters></mvc:annotation-driven>