如何修复org.hibernate.LazyInitializationException - 无法初始化代理 - 没有Session
我得到以下异常:
Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167) at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215) at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190) at sei.persistence.wf.entities.Element_$$_jvstc68_47.getNote(Element_$$_jvstc68_47.java) at JSON_to_XML.createBpmnRepresantation(JSON_to_XML.java:139) at JSON_to_XML.main(JSON_to_XML.java:84)
当我尝试从main调用以下行时:
Model subProcessModel = getModelByModelGroup(1112);System.out.println(subProcessModel.getElement().getNote());
我getModelByModelGroup(int modelgroupid)
首先实现了这个方法,如下所示:
public static Model getModelByModelGroup(int modelGroupId, boolean openTransaction) { Session session = SessionFactoryHelper.getSessionFactory().getCurrentSession(); Transaction tx = null; if (openTransaction) { tx = session.getTransaction(); } String responseMessage = ""; try { if (openTransaction) { tx.begin(); } Query query = session.createQuery("from Model where modelGroup.id = :modelGroupId"); query.setParameter("modelGroupId", modelGroupId); List<Model> modelList = (List<Model>)query.list(); Model model = null; for (Model m : modelList) { if (m.getModelType().getId() == 3) { model = m; break; } } if (model == null) { Object[] arrModels = modelList.toArray(); if (arrModels.length == 0) { throw new Exception("Non esiste "); } model = (Model)arrModels[0]; }
但仍然得到同样的错误。我一直在阅读这个错误,并找到了一些可能的解决方案。其中一个是将lazyLoad设置为false但我不允许这样做,这就是我被建议控制会话的原因
天涯尽头无女友
眼眸繁星
相关分类