Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для lowercase
213 / 202 / 85
Регистрация: 09.05.2012
Сообщений: 494

Hibernate: No Session found for current thread

09.05.2014, 11:28. Показов 2212. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Весьма дурацкая проблема с хибернейтом, которая заключается в том, что последний при запуске приложения на сервере выдает org.hibernate.HibernateException: No Session found for current thread. Но модульные тесты проходят без малейших проблем. application-context.xml для тестов идентичен тому, который используется в приложении. Если добавить в настройки хибернейт hibernate.current_session_context_class = thread, то получаю екзепшн с текстом "createQuery is not valid without active transaction".
Я не могу никак понять, что не так? Почему тесты проходят, а запуск на сервере приводит к вылету екзепшна?
Кликните здесь для просмотра всего текста
application-context.xml
XML
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
<beans>
    <tx:annotation-driven transaction-manager="txManager"/>
 
    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="mySessionFactory"/>
    </bean>
 
    <bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="myDataSource"/>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL82Dialect</prop>
            </props>
        </property>
        <property name="annotatedClasses">
            <list>
                <value>com.omgskilledteam.gsb.model.bean.GsJobReferenceEntity</value>
            </list>
        </property>
    </bean>
 
    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="org.postgresql.Driver"/>
        <property name="url" value="jdbc:postgresql://localhost:5432/gscriptbot"/>
        <property name="username" value="postgres"/>
        <property name="password" value="postgres"/>
    </bean>
 
</beans>
DAO
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Repository
@Transactional(propagation = Propagation.MANDATORY)
public class GsJobReferenceDao {
 
    @Autowired
    private SessionFactory sessionFactory;
 
    public GsJobReferenceEntity getJobReferenceEntityByIdentity(String jobName, String jobGroup) {
        Session currentSession = sessionFactory.getCurrentSession();
        String hql = "FROM GsJobReferenceEntity WHERE jobName = :jobName AND jobGroup = :jobGroup";
        Query query = currentSession.createQuery(hql);
        query.setParameter("jobName", jobName);
        query.setParameter("jobGroup", jobGroup);
        return (GsJobReferenceEntity) query.uniqueResult();
    }
 
}
Юнит-тест
Java
1
2
3
4
5
6
7
8
9
10
11
12
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration({"/test-application-context.xml"})
@Transactional(propagation = Propagation.REQUIRES_NEW)
@TransactionConfiguration(defaultRollback = true)
public class GsJobReferenceDaoTest {
    @Test
    public void testGetJobReferenceEntityByIdentity() {
        assertNotNull(gsJobReferenceDao.getJobReferenceEntityByIdentity("Test JobName", "Test JobGroup"));
        assertNull(gsJobReferenceDao.getJobReferenceEntityByIdentity("unexistent-jobname", "unexistent-jobgroup"));
    }
}
Контролер
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Controller
@Transactional(propagation = Propagation.REQUIRES_NEW)
public class HomeController {
    private static Logger log = LoggerFactory.getLogger(HomeController.class);
 
    @Autowired
    private GsJobReferenceDao jobReferenceManager;
 
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String printWelcome(ModelMap model) {
 
        GsJobReferenceEntity jobReference = jobReferenceManager.getJobReferenceEntityByIdentity("job1", "group1");
        model.addAttribute("message", jobReference.toString());
 
        return "home";
    }
}

Уже не первый день страдаю этой проблемой. Что характерно, первые несколько страниц гугла и всеяны фиолетовыми ссылками - ниодного толкового решения, не нашел.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2014, 11:28
Ответы с готовыми решениями:

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

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

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

2
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
09.05.2014, 16:14
И нигде не было, что не надо делать транзакции в контроллере? Скорее всего контроллеры в одном контексте, а скан для транзакции - в другом. Можно попытаться разнести контроллеры и дао по разным пакетам и сканить контроллеры в mvc-шном контексте, а дао - в основном. А лучше все удалить и сделать нормальные dao-service слои.
2
 Аватар для lowercase
213 / 202 / 85
Регистрация: 09.05.2012
Сообщений: 494
09.05.2014, 18:05  [ТС]
Транзакции в контролерах - это я для краткости сделал. На самом же деле там есть еще service-layer.
А вот разнос по разным пакетам действительно помог. Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.05.2014, 18:05
Помогаю со студенческими работами здесь

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

Spring+hibernate thread on start (put in db)
Всем доброго времени суток. Дело в том, что мне надо некоторую информацию регулярно записывать в базу данных. То есть что бы поток...

Hibernate.properties not found
Здравствуйте! Пытаюсь освоить hibernate. Взял код поднятия сессии с доков. Вот код: package org.prodanec.hibernate.test; import...

Hibernate (Mapping not found)
Помогите, ругается на то что нету файла, хотя вот он, лежит рядом...

HHH000206: hibernate.properties not found
Разбираюсь с новым фреймворком hibernate. Когда запускаю приложение, смотрю лог сервера и вижу там вот это HHH000206:...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru