2016-07-08 3 views
3

Я настроил пружины 4.3.1 с Hibernate 5.1.0 и 2.7.5 ДжексонSpring Hibernate Джексон Hibernate5Module

У меня были некоторые ленивые инициализации исключений, потому что Джексон ObjectMapper пытается преобразовать свои объекты до конца, когда я отсутствую Транзакционной службы.

Поэтому я прочитал Hibernate5Module для Jackson.

После добавления модуля я не ленитесь исключениями, но все @JsonView аннотаций игнорируются и мои ленивые коллекции «нулевые»

public class SpringWebConfig extends WebMvcConfigurerAdapter { 

    ... 


    @Override 
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { 

     for (HttpMessageConverter<?> converter : converters) { 
      if (converter instanceof org.springframework.http.converter.json.MappingJackson2HttpMessageConverter) { 
       ObjectMapper mapper = ((MappingJackson2HttpMessageConverter) converter).getObjectMapper(); 
       mapper.registerModule(new Hibernate5Module()); 
      } 
     } 

    } 

} 

Что я делаю неправильно? Hibernate5Module должен инициализировать ленивую коллекцию ...

ответ

2

Понял работать со следующего

@EnableWebMvc 
@Configuration 
@ComponentScan({ "..." }) 
public class SpringWebConfig extends WebMvcConfigurerAdapter { 

    @Autowired 
    SessionFactory sf; 

    @Override 
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 

     Hibernate5Module module = new Hibernate5Module(sf); 
     module.disable(Feature.USE_TRANSIENT_ANNOTATION); 
     module.enable(Feature.FORCE_LAZY_LOADING); 

     Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder(); 
     builder.modulesToInstall(module); 

     converters.add(new MappingJackson2HttpMessageConverter(builder.build())); 

    } 

} 
+0

насчета Spring 5? Класс WebMvcConfigurerAdapter теперь устарел. –

+0

Вы должны непосредственно внедрить WebMvcConfigurer – Pascal

+0

Вам необходимо внедрить WebMvcConfigurer напрямую – Pascal