diff --git a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateProxySerializer.java b/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateProxySerializer.java index 79869f85..ca6eda1a 100644 --- a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateProxySerializer.java +++ b/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateProxySerializer.java @@ -6,9 +6,11 @@ import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.jsontype.TypeSerializer; +import com.fasterxml.jackson.databind.ser.ContextualSerializer; import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap; import org.hibernate.engine.spi.Mapping; @@ -27,6 +29,7 @@ */ public class HibernateProxySerializer extends JsonSerializer + implements ContextualSerializer { /** * Property that has proxy value to handle @@ -66,6 +69,16 @@ public HibernateProxySerializer(boolean forceLazyLoading, boolean serializeIdent _property = null; } + public HibernateProxySerializer(boolean forceLazyLoading, boolean serializeIdentifier, Mapping mapping, BeanProperty property) { + _forceLazyLoading = forceLazyLoading; + _serializeIdentifier = serializeIdentifier; + _mapping = mapping; + _dynamicSerializers = PropertySerializerMap.emptyForProperties(); + _property = property; + } + + + /* /********************************************************************** /* JsonSerializer impl @@ -165,4 +178,10 @@ protected Object findProxied(HibernateProxy proxy) } return init.getImplementation(); } + + @Override + public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) + throws JsonMappingException { + return new HibernateProxySerializer(this._forceLazyLoading, this._serializeIdentifier, this._mapping, property); + } }