[英]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.