我正在Spring Boot 2.0中编写一个应用程序,并且在其中我得到了一个带有嵌套对象依赖项映射的Entity JPA的响应。
我加载了一个实体,该实体返回到@RestController并包含在响应服务中。
我注意到当对象处于控制器中(超出事务边界)时,hibernate执行的查询会获取嵌套对象(惰性定义对象引用)
怎么可能?
答案 0 :(得分:4)
在春季启动中,默认情况下启用了“在View中打开会话”。
您必须在application.properties
spring.jpa.open-in-view=false
由于杰克逊还可以尝试序列化引用的Lazy定义的对象,因此您需要为hibernate5添加杰克逊数据类型(因为您使用的是Spring Boot 2)
@Bean
public Module hibernate5Module() {
return new Hibernate5Module();
}
和您的pom.xml
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate5</artifactId>
</dependency>
没有版本,因为它将由spring-boot父级使用