我正在使用Java EE 6.0 RESTful應用程序,並使用Hibernate。我需要在序列化之前取消代理我的惰性加載對象(實際上是實體的惰性加載的實體屬性)以避免LazyInitializationException。我通過在序列化實體之前編寫一些實用程序來成功實現AMF服務。Jersey JAX-RS,Hibernate和LazyInitializationException
我正在使用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)?我不喜歡這種黑客,如果有一個正確的方法。
這篇文章可以幫助你http://stackoverflow.com/q/2216547/797704 – richarbernal
@richarbernal感謝,但我不明白怎麼會幫助 – DaTroop