【问题标题】:Hibernate :HTTP Status 500 - Internal Server Error休眠:HTTP 状态 500 - 内部服务器错误
【发布时间】:2018-08-06 18:42:05
【问题描述】:

下面是我的休眠代码:

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 响应。 请有人帮我理解这个问题。

【问题讨论】:

    标签: java json hibernate restful-url


    【解决方案1】:

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

    但是,像这样的情况几乎总是由于未初始化的惰性集合造成的。行:

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

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

    【讨论】:

      【解决方案2】:

      替换

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

      Hibernate.initialize(user.getUserCountryMapping());

      阅读更多关于lazy vs eager fetch type的信息。

      【讨论】:

      • 感谢 Kartik 它对我有用。 :)
      猜你喜欢
      • 1970-01-01
      • 2015-03-24
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多