休眠状态:HTTP状态500-内部服务器错误

时间:2018-08-06 18:42:06

标签: java json hibernate restful-url

下面是我的休眠代码:

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的响应在浏览器上.. 请有人帮我了解这个问题。

2 个答案:

答案 0 :(得分:3)

没有看到错误或您的实体映射,很难给出确切的答案。

但是,类似的情况几乎总是由于未初始化的惰性集合引起的。该行:

System.out.println(user.getUserCountryMapping()); 

使Hibernate获取该关系中的数据。如果您不在Hibernate会话中执行此操作,然后稍后再尝试依赖此关系,则会得到LazyInitializationException,如果未处理,它将是HTTP状态500。

答案 1 :(得分:1)

替换

System.out.println(user.getUserCountryMapping());

使用

Hibernate.initialize(user.getUserCountryMapping());

详细了解lazy vs eager fetch type