Java jackson序列化惰性对象HttpMessageNotWritableException&;懒散初始化异常
以下是本节的后续问题: 我曾尝试实施此解决方案,但没有成功。我想知道我是否在某些地方犯了错误 applicationContext.xmlJava jackson序列化惰性对象HttpMessageNotWritableException&;懒散初始化异常,java,spring,hibernate,jackson,Java,Spring,Hibernate,Jackson,以下是本节的后续问题: 我曾尝试实施此解决方案,但没有成功。我想知道我是否在某些地方犯了错误 applicationContext.xml <context:annotation-config /> <context:component-scan base-package="com.app"></context:component-scan> <tx:annotation-driven /> <mvc:annotation-drive
<context:annotation-config />
<context:component-scan base-package="com.app"></context:component-scan>
<tx:annotation-driven />
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.app.service.HibernateAwareObjectMapper" />
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- Hibernate server settings -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.11.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.2.Final</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate4</artifactId>
<version>2.8.6</version>
</dependency>
pom.xml
<context:annotation-config />
<context:component-scan base-package="com.app"></context:component-scan>
<tx:annotation-driven />
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.app.service.HibernateAwareObjectMapper" />
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- Hibernate server settings -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.11.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.2.Final</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate4</artifactId>
<version>2.8.6</version>
</dependency>
如果您有任何见解或建议,我们将不胜感激
最后一件事,我不想将它标记为JsonIgnore,因为它永远不会被序列化。有时我需要检索惰性对象
谢谢要解决这个问题,有两种方法。第一种方法是使用@JsonIgnore忽略电话,如果您在这个请求中不需要这些信息。
第二种方法是在结束交易前加载手机。为此,您可以使用
Hibernate.initialize(person.getPhones())
。或者您可以使用集合上的@OneToMany(fetch=FetchType.EAGER)
获取此集合。无法执行EAGER,因为我不想让phone一直提取。无法执行@JsonIgnore操作,因为我需要时间检索惰性对象。不需要电话对象的所有时间,这就是为什么我使用懒惰。。。。感谢您尝试在需要加载手机时使用Hibernate.initialize(person.getPhones())。我不想只加载手机,请使用@JsonIgnore注释