SpringMVC雜記(七) Jackson與Hibernate LazyLoding無法正常工作解決辦法
1) 如下代碼
- @Controller
- @RequestMapping("/just")
- public class TestController {
-
- @Resource
- private EmployeeDao dao;
-
- @ResponseBody
- @RequestMapping("/test")
- public List<Employee> test() {
- return dao.findAllEmployees();
- }
- }
如果dao查找出來的列表中包含不完整的Entity最終SpringMVC會出現(xiàn)一個內(nèi)部異常。
2) 有人寫了一個插件專門來解決這個問題。
- <dependency>
- <groupId>com.fasterxml</groupId>
- <artifactId>jackson-module-hibernate</artifactId>
- <version>1.9.1</version>
- </dependency>
這里包含一個Moduel("com.fasterxml.jackson.module.hibernate.HibernateModule")實現(xiàn),就像所有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 class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
- <bean class="org.springframework.http.converter.FormHttpMessageConverter" />
- <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
-
- <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
- <property name="objectMapper">
- <bean class="com.wicresoft.jpo.demo.json.HibernateAwareObjectMapper">
- <property name="prettyPrint" value="true" />
- </bean>
- </property>
- </bean>
- <bean class="org.springframework.http.converter.StringHttpMessageConverter" />
- <bean class="com.wicresoft.jpo.demo.http.converter.UTF8StringHttpMessageConverter" />
- </mvc:message-converters>
- </mvc:annotation-driven>
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。