假设我有一个关系 Customer 1 -> n Servers,声明为 FetchType.LAZY
。对于当我显示客户列表时的情况,我不想带相关实体,因此响应如下
[{
"name": "WooHoo",
"servers": null
},
...
]
完全没问题,但是当我想向特定客户展示时,我想进行一次急切的调用并将其序列化为 json,例如
{
"name": "WooHoo",
"servers": [{
"ip": "127.0.0.1",
"username": "admin"
},
...
]
}
这是我的消息转换器的 spring mvc 配置。
public MappingJackson2HttpMessageConverter jacksonMessageConverter(Hibernate5Module module){
MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(module);
messageConverter.setObjectMapper(mapper);
return messageConverter;
}
@Bean
public Hibernate5Module hibernate5Module() {
return new Hibernate5Module();
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(jacksonMessageConverter(hibernate5Module()));
super.configureMessageConverters(converters);
}
如何针对特定请求强制热切调用 + 相关实体序列化(直到第一级关系)?
最佳答案
我建议使用 hql 来加载单个客户。
来自Chapter 14. HQL: The Hibernate Query Language :
A "fetch" join allows associations or collections of values to be initialized along with their parent objects using a single select. This is particularly useful in the case of a collection. It effectively overrides the outer join and lazy declarations of the mapping file for associations and collections. See Section 19.1, “Fetching strategies” for more information.
关于java - Jackson hibernate 模块 - 渴望特定请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41220981/