У меня есть коллекция ленивого типа выборки в сущности. И я использую Spring Data (JpaRepository) для доступа к объектам.Задание того, нужна ли ленивая загрузка с данными весны
@Entity
public class Parent{
@Id
private Long id;
@OneToMany(mappedBy = "parentId", fetch = FetchType.LAZY)
private Set<Child> children;
}
Я хочу две функции в классе обслуживания и текущей реализации являются следующие:
«дети» должно быть пустым при выборке родителю
public Parent getParent(Long parentId){ return repo.findOne(parentId); }
«дети» должны быть заполняется при извлечении родителя:
public Parent getParentWithChildren(Long parentId){ Parent p = repo.findOne(parentId); Hibernate.initialize(p.children); return p; }
При возврате "Parent" объект из RestController, после исключения:
@RequestMapping("/parent/{parentId}")
public Parent getParent(@PathVariable("parentId") Long id)
{
Parent p= parentService.getParent(id);//ok till here
return p;//error thrown when converting to JSON
}
org.springframework.http.converter.HttpMessageNotWritableException: Не удалось записать содержание: не удалось инициализировать лениво коллекция Роль: com.entity.Parent.children, не удалось инициализировать прокси - нет Сессия (через ссылочную цепочку: com.entity.Parent ["children"]); вложенного исключения com.fasterxml.jackson.databind.JsonMappingException: не удалось инициализировать лениво коллекцию роли: com.entity.Parent.children, не может инициализировать прокси - не сессий (через эталонную цепь: com.entity .Parent [ "дети"])
Я думаю, что ссылка # 1 идеально подходит в нашем случае. Спасибо. – coolscitist