【发布时间】:2018-04-11 21:33:01
【问题描述】:
为了避免使用.size 手动加载字段,我想实现Hibernate4Module。不幸的是,在所有配置方面都是新的,我似乎无法让它工作。我从 java 中得到的只是:Could not write content: could not initialize proxy - no Session。
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"servlet.controller"})
public class ServletConfig extends WebMvcConfigurerAdapter {
...
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
ObjectMapper mapper = null;
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
mapper = ((MappingJackson2HttpMessageConverter) converter).getObjectMapper();
}
}
if (mapper == null) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(mapper = new ObjectMapper());
converters.add(converter);
}
Hibernate4Module hbm = new Hibernate4Module();
hbm.enable(Feature.FORCE_LAZY_LOADING);
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.registerModule(hbm);
}
...
}
谁能看到我在这里做错了什么?
注意
我遇到了一些效率缺陷,我正在研究在 DTO 之外减轻它们的可行性。我对 DTO 方法非常熟悉,我目前正在开发的软件包含 60 个名为“Ext*.java”的文件(包含使用 Gson 的 DTO)。每一个都在 100 到 1000 行之间,并且大大增加了控制器方法的长度。此外,我们将尝试添加更多单元测试。因此,我迫切希望找到一种方法来消除尽可能多的 DTO 代码。也就是说,我并不反对在需要时使用 DTO,事实上我刚刚完成了我的第一个 StdSerializer。
美国大陆大约有 20 人正在开展一个项目,我只是希望能够为混乱带来一些秩序。
【问题讨论】:
标签: java spring jackson lazy-loading hibernate-4.x