Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 84

Аннотация @Transactional

23.06.2015, 22:04. Показов 4394. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вылетает такой ексепшн, при создании курса.
org.hibernate.HibernateException: save is not valid without active transaction

вместо session.beginTransaction() и session.getTransaction().commit();(так все работало), нужно использовать аннотацию @Transactional

Java
1
2
3
4
public interface CoursesDAO {
     
    public Course createCourse(Course course);
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Repository
public class CoursesDAOImpl implements CoursesDAO {
 
     @Autowired
     private SessionFactory sessionFactory;
     @Transactional 
    public Course createCourse(Course course) {
        
        Session session = sessionFactory.getCurrentSession();
    //session.beginTransaction();
        Integer id = (Integer) session.save(course);
        course.setId(id);
        //session.getTransaction().commit();
        
        return course;
    };

Java
1
2
3
public interface CourseService {
    public Course createCourse(Course course);
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Service("CourseService")
public class CourseServiceImpl implements CourseService {
    @Autowired
    private CoursesDAO coursesDAOImpl;
 
    public CourseServiceImpl() {
 
        coursesDAOImpl = new CoursesDAOImpl();
    }
 
 
    public Course createCourse(Course course) {
 
        course = coursesDAOImpl.createCourse(course);
  
        return course;
    }
 
}

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
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
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:security="http://www.springframework.org/schema/security"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p"
     xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc [url]http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd[/url]
        [url]http://www.springframework.org/schema/beans[/url] [url]http://www.springframework.org/schema/beans/spring-beans.xsd[/url]
        [url]http://www.springframework.org/schema/context[/url] http://www.springframework.org/schema/context/spring-context-3.2.xsd">
     
    <mvc:annotation-driven />
    
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close"
        p:driverClassName="org.h2.Driver"
        p:url="jdbc:h2:tcp://localhost:9092/~/QWE;INIT=create schema if not exists QWE\;"
        p:username="sa"
        p:password="" />
 
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="hibernateProperties">   
        <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop> 
    <prop key="hibernate.show_sql">true</prop> 
    <prop key="connection.pool_size">1</prop> 
    <prop key="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</prop>
    <prop key="hibernate.current_session_context_class">thread</prop>
    <prop key="hibernate.hbm2ddl.auto">update</prop> 
    <prop key="hibernate.default_schema">QWE</prop>
  </props>  
    </property> 
        
    <property name="annotatedClasses">
      <list>
        <value>com.epam.edu.jtc.entity.User</value>
        <value>com.epam.edu.jtc.entity.Category</value>
        <value>com.epam.edu.jtc.entity.Course</value>
        <value>com.epam.edu.jtc.entity.UserCourse</value>
        <value>com.epam.edu.jtc.entity.ManagerCourse</value>
         </list>
    </property>
    </bean>     
    
     
    
    <!-- FreeMarker Configuration -->
<bean id="freemarkerEmailConfig" class="freemarker.template.Configuration">
    <property name="directoryForTemplateLoading" value="WEB-INF/pages/templates" />
    <property name="objectWrapper">
        <bean class="freemarker.template.DefaultObjectWrapper"/>
    </property>
    
   
</bean>
 
    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
<!--     <tx:annotation-driven transaction-manager="transactionManager"/>   -->
    <context:component-scan base-package="com.epam.edu.jtc" />
    
</beans>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.06.2015, 22:04
Ответы с готовыми решениями:

HIbernate transactional
Всем привет, помогите пожалуйста разобраться. У меня есть пара сущностей, к примеру Student, и есть StudentDAO с логикой доступа и crud...

Spring Data + Transactional
Добрового времени суток, пишу тесты к дао. public interface RailwayTicketDao extends CrudRepository&lt;RailwayTicket, Long&gt; { ...

@Transactional методы в Hibernate
Предупреждаю, что не профессионал... Глупые, в вашем понимании, вопросы задавать не стесняюсь я только учусь... Имеется вэб...

24
40 / 40 / 20
Регистрация: 14.05.2015
Сообщений: 116
24.06.2015, 21:46
Студворк — интернет-сервис помощи студентам
goldenhawk, попробуйте убрать в конфиге строку
XML
1
<prop key="hibernate.current_session_context_class">thread</prop>
0
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 84
24.06.2015, 23:47  [ТС]
<prop key="hibernate.current_session_context_c lass">thread</prop>
убрал это, он пишет
org.hibernate.HibernateException: No Session found for current thread

на строке Session session = sessionFactory.getCurrentSession();
//session.beginTransaction();
0
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 84
26.06.2015, 08:52  [ТС]
lyolik,
если удалить <prop key="hibernate.current_session_context_c lass">thread</prop>
то пишет ексепшн
org.hibernate.HibernateException: No Session found for current thread

на строке Session session = sessionFactory.getCurrentSession();
//session.beginTransaction();

а если поменять getCurrentSession() на openSession(), то работа программы не меняется. Ексепшены такие же остаются. Может еще какие настройки гибернате не прописаны?
0
40 / 40 / 20
Регистрация: 14.05.2015
Сообщений: 116
28.06.2015, 15:12
goldenhawk, в зависимостях org.springframework.aop есть?
0
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 84
28.06.2015, 17:28  [ТС]
в web.xml добавил

XML
1
2
3
4
5
6
7
8
9
  <filter>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
и заработало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2015, 17:28

Spring repositories or/and transactional
Всем привет. Подскажите пожалуйста на пальцах логику применения @Repository и @Transactional. Я буду пользоваться Spring (и наверное...

Ошибка при добавлении анотаций @Transactional
Exception in thread &quot;main&quot; java.lang.ClassCastException: com.sun.proxy.$Proxy30 cannot be cast to ru.andrey.services.ServiceBook at...

[Spring & Hibernate] Обойтись без @Transactional в контроллере
На SO прочитал, что все транзакции должны быть в сервисах и следует избегать @Transactional в контроллерах. Сейчас у меня контроллер...

Spring Core - Аннотация @Value
Приветствую уважаемые форумчане. У меня не работает Аннотация @Value. Вместо нужно строки показывает null. В интернете все...

Spring аннотация Autowired
Всем, добрый день. Изучаю Spring недавно и соответственно столкнулся с некоторыми трудностями. У меня есть фабрика, которая возвращает...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru