Java EE 6.0 RESTful アプリに取り組んでおり、Hibernate を使用しています。LazyInitializationException を回避するために、シリアル化の前に、遅延ロードされたオブジェクト (実際にはエンティティの遅延ロードされたエンティティ プロパティ) のプロキシを解除する必要があります。エンティティをシリアル化する前にそれを行うユーティリティをコーディングすることで、AMF サービスでこれを成功させました。
私はJersey JAX-RS実装を使用しています.Jacksonでこれを行う必要があります. BeanSerializer で、プロキシ解除が行われる可能性があり、正常に機能すると思われる場所を見つけましたが、この方法でライブラリ クラスを変更する必要があり、変更したくありません。
したがって、変更後の BeanSerializer.serialize メソッドは次のとおりです。
@Override
public final void serialize(Object bean, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonGenerationException
{
bean = Util.deproxy(bean); // ***** Deproxy the bean here *****
jgen.writeStartObject();
if (_propertyFilterId != null) {
serializeFieldsFiltered(bean, jgen, provider);
} else {
serializeFields(bean, jgen, provider);
}
jgen.writeEndObject();
}
私の質問は、ライブラリ クラス (BeanSerializer) を変更せずにこれを行う方法ですか? 適切な方法があれば、この種のハックは好きではありません。