我正在开发一个Spring Boot应用程序,我懒得在我的类中加载一堆字段。但是,这些字段在请求中返回对象时为空,即使它们应该具有值。
我将hibernate感知对象映射器添加到我的应用程序
@Bean
public Jackson2ObjectMapperBuilder configureObjectMapper() {
return new Jackson2ObjectMapperBuilder()
.modulesToInstall(Hibernate4Module.class);
}
我可以在代码中访问延迟加载的字段,但只是将对象转换为json将无效。
MediaContent.java
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class MediaContent extends Content {
@OneToOne(fetch = FetchType.LAZY)
private StoredFile previewFile;
@OneToOne(fetch = FetchType.LAZY)
private StoredFile imageFile;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "downloadFor")
private List<StoredFile> downloadFiles;
@ManyToOne(fetch = FetchType.LAZY)
private Genre genre;
...
}
ContentController.java
这将返回带有所有延迟加载字段null
的对象,即使它们在数据库中有值也是如此。
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@Transactional
public @ResponseBody
Content find(@PathVariable Long id) {
return em.find(Content.class, id);
}
基本上,我希望延迟加载的字段在将对象返回给请求时接收它们的值。