У меня есть 2 объекта с родительским отношением детей в спящем режиме (4.2).Hibernate Lazy loading Материнская компания в дочернем объекте (@ManyToOne)
@Entity
@Table(name = "WORLDZONE")
public class Worldzone implements java.io.Serializable {
@Column
private BigDecimal id;
@Column
private Integer version;
@Column
private String worldZoneCd;
// setters & getters
}
@Entity
@Table(name = "COUNTRY")
public class Country implements java.io.Serializable {
@Column
private BigDecimal id;
@Column
private Integer version;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "WORLDZONE_ID")
private Worldzone worldzone;
// setters & getters
}
В Spring MVC (4.1.3), я использую Джексон ObjectMapper преобразовать мои ответы услуг в формате JSON.
При преобразовании ответа дочернего объекта, Джексон выходит из строя с ошибкой - no session
. В принципе, во время преобразования объекта в JSON он не находит сессию Hibernate для ленивой загрузки данных и преобразования ее в JSON.
Мой вопрос заключается в том, какая конфигурация требуется, чтобы позволить Джексону иметь сеанс для ленивой загрузки родительской сущности.
Я попытался ниже вариантов не повезло -
Вариант 1:
Добавлен пользовательский ObjectMapper, используя информацию из этого link
public class HibernateAwareObjectMapper extends ObjectMapper {
public HibernateAwareObjectMapper() {
Hibernate4Module hm = new Hibernate4Module();
hm.configure(Hibernate4Module.Feature.FORCE_LAZY_LOADING, true);
registerModule(hm);
}
}
После настройки сообщений-конвертер в сервлет-контексте .xml, ошибка остановлена. Но данные идут как null для Parent.
Вариант 2:
Настраивается в web.xml OpenSessionInViewFilter
. Но во время преобразования объекта сеанс недоступен Джексону.
Любые указатели были бы полезны. Благодарю.