Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
5 / 5 / 1
Регистрация: 08.05.2011
Сообщений: 121

Hibernate: could not initialize proxy - no Session

17.05.2015, 19:25. Показов 1198. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Изучаю Spring, столкнулся с такой ошибкой:

Кликните здесь для просмотра всего текста
[2015-05-17T19:26:11.512+0400] [glassfish 4.1] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=28 _ThreadName=http-listener-1(1)] [timeMillis: 1431876371512] [levelValue: 900] [[
StandardWrapperValve[spring-dispatcher]: Servlet.service() for servlet spring-dispatcher threw exception
org.hibernate.LazyInitializationExceptio n: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitiali zer.initialize(AbstractLazyInitializer.j ava:165)
at org.hibernate.proxy.AbstractLazyInitiali zer.getImplementation(AbstractLazyInitia lizer.java:286)
at org.hibernate.proxy.pojo.javassist.Javas sistLazyInitializer.invoke(JavassistLazy Initializer.java:185)
at com.netcraft.model.Attribute_$$_jvst6ef_ 0.getName(Attribute_$$_jvst6ef_0.java)
at com.netcraft.controller.TestController.t est(TestController.java:41)
at sun.reflect.NativeMethodAccessorImpl.inv oke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.inv oke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.jav a:43)
at java.lang.reflect.Method.invoke(Method.j ava:483)
at org.springframework.web.method.support.I nvocableHandlerMethod.doInvoke(Invocable HandlerMethod.java:221)
at org.springframework.web.method.support.I nvocableHandlerMethod.invokeForRequest(I nvocableHandlerMethod.java:137)
at org.springframework.web.servlet.mvc.meth od.annotation.ServletInvocableHandlerMet hod.invokeAndHandle(ServletInvocableHand lerMethod.java:110)
at org.springframework.web.servlet.mvc.meth od.annotation.RequestMappingHandlerAdapt er.invokeHandleMethod(RequestMappingHand lerAdapter.java:776)
at org.springframework.web.servlet.mvc.meth od.annotation.RequestMappingHandlerAdapt er.handleInternal(RequestMappingHandlerA dapter.java:705)
at org.springframework.web.servlet.mvc.meth od.AbstractHandlerMethodAdapter.handle(A bstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.Dispatch erServlet.doDispatch(DispatcherServlet.j ava:959)
at org.springframework.web.servlet.Dispatch erServlet.doService(DispatcherServlet.ja va:893)
at org.springframework.web.servlet.Framewor kServlet.processRequest(FrameworkServlet .java:966)
at org.springframework.web.servlet.Framewor kServlet.doGet(FrameworkServlet.java:857 )
at javax.servlet.http.HttpServlet.service(H ttpServlet.java:687)
at org.springframework.web.servlet.Framewor kServlet.service(FrameworkServlet.java:8 42)
at javax.servlet.http.HttpServlet.service(H ttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper .service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapper Valve.invoke(StandardWrapperValve.java:3 18)
at org.apache.catalina.core.StandardContext Valve.invoke(StandardContextValve.java:1 60)
at org.apache.catalina.core.StandardPipelin e.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipelin e.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invok e(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostVal ve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdap ter.doService(CoyoteAdapter.java:415)
at org.apache.catalina.connector.CoyoteAdap ter.service(CoyoteAdapter.java:282)
at com.sun.enterprise.v3.services.impl.Cont ainerMapper$HttpHandlerCallable.call(Con tainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.Cont ainerMapper.service(ContainerMapper.java :167)
at org.glassfish.grizzly.http.server.HttpHa ndler.runService(HttpHandler.java:201)
at org.glassfish.grizzly.http.server.HttpHa ndler.doHandle(HttpHandler.java:175)
at org.glassfish.grizzly.http.server.HttpSe rverFilter.handleRead(HttpServerFilter.j ava:235)
at org.glassfish.grizzly.filterchain.Execut orResolver$9.execute(ExecutorResolver.ja va:119)
at org.glassfish.grizzly.filterchain.Defaul tFilterChain.executeFilter(DefaultFilter Chain.java:284)
at org.glassfish.grizzly.filterchain.Defaul tFilterChain.executeChainPart(DefaultFil terChain.java:201)
at org.glassfish.grizzly.filterchain.Defaul tFilterChain.execute(DefaultFilterChain. java:133)
at org.glassfish.grizzly.filterchain.Defaul tFilterChain.process(DefaultFilterChain. java:112)
at org.glassfish.grizzly.ProcessorExecutor. execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPN IOTransport.fireIOEvent(TCPNIOTransport. java:561)
at org.glassfish.grizzly.strategies.Abstrac tIOStrategy.fireIOEvent(AbstractIOStrate gy.java:112)
at org.glassfish.grizzly.strategies.WorkerT hreadIOStrategy.run0(WorkerThreadIOStrat egy.java:117)
at org.glassfish.grizzly.strategies.WorkerT hreadIOStrategy.access$100(WorkerThreadI OStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerT hreadIOStrategy$WorkerThreadRunnable.run (WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.Abstrac tThreadPool$Worker.doWork(AbstractThread Pool.java:565)
at org.glassfish.grizzly.threadpool.Abstrac tThreadPool$Worker.run(AbstractThreadPoo l.java:545)
at java.lang.Thread.run(Thread.java:745)
]]


Код контроллера:

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.netcraft.controller;
 
import com.netcraft.model.Attribute;
import com.netcraft.model.HObject;
import com.netcraft.hibernate.Attribute.service.AttributeService;
import com.netcraft.hibernate.HObject.service.ObjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
 
import java.sql.SQLException;
 
@Controller
public class TestController {
 
    @Autowired
    private AttributeService attributeService;
 
    @Autowired
    private ObjectService objectService;
 
    @ModelAttribute
    public void addingCommonObjects(Model model1){
        model1.addAttribute("headerMsg", "Hello I am Header!");
    }
 
 
    @RequestMapping(value = "/test")
    public ModelAndView test() throws SQLException {
        ModelAndView modelAndView = new ModelAndView("testpage");
 
        System.out.println("[TestController] objectService = " + objectService);
        System.out.println("[TestController] attributeService = " + attributeService);
 
        HObject object = objectService.getObject(1);
        Attribute attribute = attributeService.getAttribute(1);
 
        System.out.println("[TestController] object = " + object.getName());
        System.out.println("[TestController] attribute = " + attribute.getName());
 
        modelAndView.addObject("object", object);
        modelAndView.addObject("attribute", attribute);
 
        return modelAndView;
    }
}


Если убрать вызов любого сервиса и оставить 1 то всё будет работать ок.
Нагуглил что можно поставить lazy=false, но мне интересно узнать какое правильное а не быстрое решение.

Пробовал ставить такие настройки:
<prop key="current_session_context_class">thre ad</prop>

<property name="hibernate.enable_lazy_load_no_tran s">true</property>



Также спрошу заодно ещё пару вопросов:
В чём разница инициализировать sessionFactory через Spring и через свой класс - HibernateUtil (обычно его называют так)?
Всегда ли есть резон инжектить классы и использовать service-классы, или иногда лучше обойтись без них?

Добавлено через 7 минут
Вот один из репозитори классов:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package com.netcraft.hibernate.Attribute.DAO;
 
import com.netcraft.model.Attribute;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
 
import java.sql.SQLException;
 
@Repository
public class AttributeDAOImpl implements AttributeDAO {
 
    @Autowired
    SessionFactory sessionFactory;
 
    @Override
    public void addAttribute(Attribute attribute) throws SQLException {
        sessionFactory.getCurrentSession().save(attribute);
    }
 
    @Override
    public void updateAttribute(Attribute attribute) throws SQLException {
        sessionFactory.getCurrentSession().update(attribute);
    }
 
    @Override
    public Attribute getAttribute(long attr_id) throws SQLException {
        return (Attribute)sessionFactory.getCurrentSession().load(Attribute.class, attr_id);
    }
 
    @Override
    public void deleteAttribute(Attribute attribute) throws SQLException {
        sessionFactory.getCurrentSession().delete(attribute);
    }
}


До этого делал вот так и таких ошибок не было(но и не использовал инъекции):
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package com.netcraft.util.hibernate.Attribute;
 
import com.netcraft.model.Attribute;
import com.netcraft.util.hibernate.HibernateUtil;
import org.hibernate.Session;
 
import java.sql.SQLException;
 
public class AttributeDAOImpl implements AttributeDAO {
 
    @Override
    public void addAttribute(Attribute attribute) throws SQLException {
        Session session = null;
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            session.save(attribute);
            session.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (session != null && session.isOpen()) {
                session.close();
            }
        }
    }
 
    @Override
    public void updateAttribute(Attribute attribute) throws SQLException {
        Session session = null;
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            session.update(attribute);
            session.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (session != null && session.isOpen()) {
                session.close();
            }
        }
    }
 
    @Override
    public Attribute getAttribute(long attr_id) throws SQLException {
        Session session = null;
        Attribute attribute = null;
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            attribute = (Attribute) session.load(Attribute.class, attr_id);
            System.out.println("[AttributeDAOImpl] attribute = " + attribute.getName());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (session != null && session.isOpen()) {
                session.close();
            }
        }
        return attribute;
    }
 
    @Override
    public void deleteAttribute(Attribute attribute) throws SQLException {
        Session session = null;
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            session.delete(attribute);
            session.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (session != null && session.isOpen()) {
                session.close();
            }
        }
    }
}


Добавлено через 45 минут
использовал get вместо load - всё ок.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.05.2015, 19:25
Ответы с готовыми решениями:

Spring mvc org.hibernate.LazyInitializationException: could not initialize proxy - no Session
Добрый день. Помогите исправить ошибку. Проблема после AJAX запроса: $.ajax({ url: '/electronsun/admin/saveproduct', ...

Hibernate + could not initialize proxy - no Session
Есть вот такой метод: @Override public Collection getAllCategories() { List&lt;Category&gt; categories = null; ...

Hibernate session.contains
стараюсь изучить hibernate. класс entity import org.codehaus.jackson.annotate.JsonTypeInfo; import javax.persistence.*; import...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2015, 19:25
Помогаю со студенческими работами здесь

Hibernate: No Session found for current thread
Здравствуйте. Весьма дурацкая проблема с хибернейтом, которая заключается в том, что последний при запуске приложения на сервере выдает...

Объясните в чем суть ошибки работы session в Hibernate
Пишу пробный проект. Есть сущность User и таблица users Mysql. Имеется слой DAO и Servise В контроллере замапил запрос к JSP и пытаюсь...

Что твориться с сессиями ? (strListingID = Session('ListingID'); strAccountID = Session('AccountID'); strActive = Session('Active'); )
-----------------------page1.asp-------------------------- Basicrs = Server.CreateObject('ADODB.Recordset'); theSQL='....'; ...

Почему session('aaa') обнуляется при session.Abandon, а session.sessionid остается таким же ?
Народ помогите &lt;% response.write(session.sessionid) response.write(session('aaa')) session.Abandon ...

Initialize Slots. Initialize Slot3
Добрый день скажите пожалуйста если кто то когда то столкнулся с таkoi ошибкой.... как мне сказали там &quot; хакеры &quot; залезли в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru