vendredi 6 mars 2015

Spring 4.1's JsonView and Hibernate4Module

I have a project which liberally uses lazy loading via the org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter view filter.


If I disable this, I have to add a new message converter in my rest servlet configuration:



public MappingJackson2HttpMessageConverter jacksonMessageConverter() {
MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();

ObjectMapper mapper = new ObjectMapper();

// Registering Hibernate4Module to support lazy objects
mapper.registerModule(new Hibernate4Module());

messageConverter.setObjectMapper(mapper);

return messageConverter;
}

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// Add the custom-configured HttpMessageConverter
converters.add(jacksonMessageConverter());

super.configureMessageConverters(converters);
}


However, doing so seems to break the behavior of @JsonView: the existence of the @JsonView annotation no longer seems to filter in/out any properties.


My guess is Hibernate4Module doesn't support @JsonView, but if that's the case, how can I use Spring 4.1's @JsonView support and make Jackson cognizant of lazy-loaded Hibernate entities? The only solution so far seems to be avoiding Hibernate4Module and relying on the OpenEntityManagerInViewFilter filter.


Thanks for any insight you can offer.


Aucun commentaire:

Enregistrer un commentaire