gpt4 book ai didi

java - Jackson ObjectMapper 中的惰性对象未转换为 null

转载 作者:行者123 更新时间:2023-11-29 08:54:03 29 4
gpt4 key购买 nike

我将 Spring 3.1.4 与 jackson-datatype-hibernate 2.2.3 一起使用,并从我的 REST 服务开始从 JPA 获取我的用户对象。所以现在邮件是自动延迟获取的。我想要的是一个只有名称的 JSON,而邮件只是空的。

MyRest 方法:

@Transactional(readOnly = true)
@RequestMapping(
value="/get/{userId}",
method = RequestMethod.GET,
produces={"application/json","application/xml"}
)
@ResponseBody
public User getUser(@PathVariable("userId") Long userId){
User result = userManager.getUser(userId);
return result;
}

最小化用户类别:

public class User{

private String name;

@OneToMany
private Set<Mail> mails;
}

自定义 Jackson 对象映射器:

public class CustomJacksonObjectMapper extends ObjectMapper {

public CustomJacksonObjectMapper() {
super();
this.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
this.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
this.setSerializationInclusion(Include.NON_NULL);
}

初始化
@Configuration
@ComponentScan(basePackages = { "com.fabel" })
public class SpringConfiguration extends WebMvcConfigurationSupport{

@Bean
public ObjectMapper objectMapper() {
CustomJacksonObjectMapper objectMapper = new CustomJacksonObjectMapper();
Hibernate4Module hibernate4Module = new Hibernate4Module();
objectMapper.registerModule(hibernate4Module);
return objectMapper;
}

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(objectMapper());
converters.add(converter);
}

我将我的实现定位于德国博客 http://blog.rasc.ch/?p=2441并做了所有提到的事情。有什么想法我能做什么?@JacksonIgnore 是别无选择的,因为有时我需要发送惰性对象。然后我会简单地使用 Hibernate.initialize。我错过了什么?

最佳答案

这可能为时已晚,无论如何有一个库可以帮助您使用 hiberante 进行延迟加载,它是 jackson-datatype-hibernate4

您可以按照以下步骤创建一个可以加载惰性数据并将其序列化的 ObjectMapper 对象:

ObjectMapper mapper = new ObjectMapper();
Hibernate4Module hibernate4Module = new Hibernate4Module();
hibernate4Module.enable(Hibernate4Module.Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS);
mapper.registerModule(hibernate4Module);

关于java - Jackson ObjectMapper 中的惰性对象未转换为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21273163/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com