Springを使用してRESTサービスを作成しています。
これが私のコントローラーの一部です:
@RequestMapping("/get")
public @ResponseBody Person getPerson() {
Person person = personRepository.findOne(1L);
//(1) person.setRoles(null);
return person;
}
その人の役割は怠惰に初期化されており、その時点では必要ありません。(1)がコメントアウトされると、すべてが失敗します
org.springframework.http.converter.HttpMessageNotWritableException:JSONを書き込めませんでした:ロールのコレクションを遅延初期化できませんでした:no.something.project.Person.roles、プロキシを初期化できませんでした-セッションがありませんなど。
これは、(1)として実行し、手動でnull(またはその他の値)に設定することで解決できるため、Jacksonがオブジェクトをシリアル化しようとしても失敗しません。
ただし、これは煩わしいため、さまざまな場所で何度も実行する必要があります。初期化されていないときにこれらの遅延初期化フィールドを無視するか、単にnullに設定する簡単な解決策が欲しいです。
注:オブジェクトの値の@JsonIgnoreは解決策ではありません。他の場合には、これらの値を含める必要があります。