下面是我的休眠代码:
SessionFactory sessionFactory;
Session session = null;
LoginEntity user = null;
try {
sessionFactory = HibernateUtility.getSessionFactory();
session = sessionFactory.openSession();
session.beginTransaction();
user = session.get(LoginEntity.class, user_id);
System.out.println(user.getUserCountryMapping()); // if I remove this line I get error..
session.getTransaction().commit();
return user;
} catch (Exception e) {
Logger.getLogger(BulkActionMethods.class.getName()).log(Level.SEVERE, null, e);
} finally {
if (session != null) {
session.close();
}
}
我的代码遇到一个奇怪的问题,当我删除System.out.println(user.getUserCountryMapping());
行时,在浏览器上出现HTTP Status 500 - Internal Server Error
错误,但是当我写此行时,我得到了JSON
的响应在浏览器上..
请有人帮我了解这个问题。
答案 0 :(得分:3)
没有看到错误或您的实体映射,很难给出确切的答案。
但是,类似的情况几乎总是由于未初始化的惰性集合引起的。该行:
System.out.println(user.getUserCountryMapping());
使Hibernate
获取该关系中的数据。如果您不在Hibernate
会话中执行此操作,然后稍后再尝试依赖此关系,则会得到LazyInitializationException
,如果未处理,它将是HTTP状态500。
答案 1 :(得分:1)
替换
System.out.println(user.getUserCountryMapping());
使用
Hibernate.initialize(user.getUserCountryMapping());