Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jackson序列化惰性对象HttpMessageNotWritableException&;懒散初始化异常_Java_Spring_Hibernate_Jackson - Fatal编程技术网

Java jackson序列化惰性对象HttpMessageNotWritableException&;懒散初始化异常

Java 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

以下是本节的后续问题:

我曾尝试实施此解决方案,但没有成功。我想知道我是否在某些地方犯了错误

applicationContext.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>
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注释