Я видел сообщение об этом, но кажется, что я продолжаю сталкиваться с одной и той же проблемой.
Вот похожее сообщение:
JsonMappingException: не удалось инициализировать прокси - нет сеанса
Проблема
Поэтому предлагается добавить следующее:
private MappingJackson2HttpMessageConverter jacksonMessageConverter() {
MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper mapper = new ObjectMapper();
//Registering Hibernate4Module to support lazy objects
mapper.registerModule(new Hibernate5Module());
messageConverter.setObjectMapper(mapper);
return messageConverter;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(jacksonMessageConverter());
super.configureMessageConverters(converters);
}
Но у меня нет метода super.configureMessageConverters()
внутри super
. Говорят, что проще всего добавить EAGER
, но это нежелательно. другим решением было бы использовать @JsonIgnore
, но я хочу получить соответствующие объекты. Говорят, что добавление кода, который вы видите над этим текстом, является одним из правильных и чистых способов справиться с этим. Это все еще правда? Если да, то как мне написать super.configureMessageConverters(converters);
, потому что это проблема.
Дополнительная информация
Эта проблема возникла, когда я добавлял отношения «многие ко многим»:
Тип
// region: relationships
@ManyToMany(mappedBy = "types")
private Set<License> licenses;
// endregion: relationships
Лицензия
@ManyToMany
@JoinTable(name = "license_restrictions",
joinColumns = @JoinColumn(name = "license_id"),
inverseJoinColumns = @JoinColumn(name = "type_id"))
private Set<Type> types;
// endregion: relationships
ОТРЕДАКТИРОВАНО V1
Я добавил следующее, как было предложено в комментариях:
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(jackson2HttpMessageConverter());
}
@Bean
public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(this.jacksonBuilder().build());
return converter;
}
private Jackson2ObjectMapperBuilder jacksonBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
Hibernate5Module hibernateModule = new Hibernate5Module();
hibernateModule.configure(Hibernate5Module.Feature.FORCE_LAZY_LOADING, false);
builder.modules(hibernateModule);
// Spring MVC default Objectmapper configuration
builder.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
builder.featuresToDisable(MapperFeature.DEFAULT_VIEW_INCLUSION);
return builder;
}
Это также не возвращает результат.
Типов null
, хотя это должен быть набор из 2 типов.
Здесь вы можете видеть, что у меня есть типы, привязанные к лицензии 1.
SyntaxError: JSON.parse: unexpected end of data at line 1 column 63970 of the JSON data
Я пытался добавить это только сейчас, но он загрузил слишком много данных (бесконечный цикл). - person Oguzcan   schedule 07.03.2018