良い一日を過ごしました。グーグリンとJSON1からJSON2へのアップグレードにかなりの時間を費やしましたが、エンティティのリストを返そうとすると、例外が発生します。
「受信した例外はJSONを書き込めませんでした:プロキシを初期化できませんでした-セッションがありません(参照チェーンを介して:」
これがHibernateの怠惰な初期化に関連していることは知っていますが、それを修正する方法がわかりません。jackson-module-hibernateプロジェクトが解決策だと思いました。しかし、私はそれを機能させることができませんでした。
これが私の技術です:
- 春:3.2.1リリース
- Hibernate4.1.7。ファイナル
- ジャクソン2
- ジャクソンコア2.0.4
- jackson-databind:2.0.4
- jackson-datatype-hibernate4:2.1.2
私はJavaConfigを使用しています:..。
@Bean
public com.mycompany.config.MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setObjectMapper(new HibernateAwareObjectMapper());
return mappingJackson2HttpMessageConverter;
}
@Bean
public OpenEntityManagerInViewFilter springOpenEntityManagerInViewFilter() {
return new org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter();
}
@Bean
public ContentNegotiatingViewResolver contentNegotiatingViewResolver() {
final ContentNegotiatingViewResolver contentNegotiatingViewResolver = new ContentNegotiatingViewResolver();
contentNegotiatingViewResolver.setDefaultContentType(MediaType.APPLICATION_JSON);
final ArrayList defaultViews = new ArrayList();
defaultViews.add(converter());
contentNegotiatingViewResolver.setDefaultViews(defaultViews);
return contentNegotiatingViewResolver;
}
私も持っています:
public class HibernateAwareObjectMapper extends ObjectMapper {
public HibernateAwareObjectMapper() {
Hibernate4Module hm = new Hibernate4Module();
registerModule(hm);
}
}
フローはコントローラーから始まります。コントローラーは、それぞれがエンティティまたはリストを返す複数のサービスを呼び出します。次に、返されたオブジェクトをオブジェクトに入れて、@ResponseBodyが機能すると考えて返します。ただし、例外が発生するため、正しく配線してはいけません。
誰かがここでエラーを見ることができますか?
ありがたいことに...