簡體   English   中英

休眠狀態:HTTP狀態500-內部服務器錯誤

[英]Hibernate :HTTP Status 500 - Internal Server Error

下面是我的休眠代碼:

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());時,我的代碼遇到了一個奇怪的問題System.out.println(user.getUserCountryMapping()); 我在瀏覽器上收到HTTP Status 500 - Internal Server Error錯誤行,但是在寫此行時,我在瀏覽器上得到了確切的JSON響應。請有人幫助我了解此問題。

如果沒有看到錯誤或您的實體映射,很難給出確切的答案。

但是,類似的情況幾乎總是由於未初始化的惰性集合。 該行:

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

使Hibernate提取該關系中的數據。 如果您不在Hibernate會話中執行此操作,然后稍后再嘗試依賴此關系,則會得到LazyInitializationException ,如果不處理,它將是HTTP狀態500。

更換

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

Hibernate.initialize(user.getUserCountryMapping());

閱讀更多關於lazy vs eager fetch type的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM