У меня есть база данных, в которой данные о пользователях и адресах хранятся в отдельных таблицах.Когда пользователь входит на мою страницу, я хочу показать ему форму, с помощью которой он может изменить данные своего пользователя / учетной записи.Тем не менее, я получаю исключение: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
.Атрибуты адреса не могут быть загружены.Пользователь загружается просто отлично, и это то, что я не понимаю.Мой AddressDAOImpl
выглядит следующим образом:
@Autowired
private SessionFactory sessionFactory;
public void addAddress(Address address)
{
sessionFactory.getCurrentSession().save(address);
}
public void updateAddress(Address address)
{
sessionFactory.getCurrentSession().update(address);
}
public List<Address> listAddress()
{
return sessionFactory.getCurrentSession().createQuery("from address").list();
}
public void deleteAddress(int id)
{
Address addr = (Address) sessionFactory.getCurrentSession().load(Address.class, id);
if(addr != null)
{
sessionFactory.getCurrentSession().delete(addr);
}
}
public Address getAddress(int id)
{
return (Address) sessionFactory.getCurrentSession().load(Address.class, id);
}
Мой контроллер делает это:
@RequestMapping("/library/home")
public ModelAndView showHome()
{
String username = SecurityContextHolder.getContext().getAuthentication().getName();
User user = userService.getUser(username);
Address address = addressService.getAddress(user.getId());
ModelMap mmap = new ModelMap();
mmap.addAttribute("user", user);
mmap.addAttribute("addresse", address);
return new ModelAndView("/library/home", mmap);
}
Почему это не работает?И почему это работает для пользовательских данных?