@Repository
public class Init {
public static void main(String[] args) {
Init init = new Init();
init.addUser(init.getSessionFactory());
}
private SessionFactory getSessionFactory() {
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "Spring_Hibernate.xml" });
SessionFactory sf = (SessionFactory) context.getBean("sessionFactory");
return sf;
}
@Transactional
private void addUser(SessionFactory sf) {
Session session = sf.getCurrentSession();
User user = new User();
user.setName("123");
session.save(user);
session.close();
sf.close();
}
}
XML:Спящий 4 Пружина 4 Не удалось получить транзакции синхронизированных сеанс для текущего потока
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.warmmer.bean" />
<property name="hibernateProperties">
<!-- <value> hibernate.dialect=org.hibernate.dialect.HSQLDialect </value> -->
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
</props>
</property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="txManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />
ERR: ИНФОРМАЦИЯ: Использование DataSource [[email protected]] из Hibernate SessionFactory для HibernateTransactionManager Исключения в потоке «основной» org.hibernate.HibernateException: не удалось получить транзакции синхронизированных сессий для текущего потока
Если: hibernate.current_session_cont ext_class установить «нить»
тогда: сохранение не является действительным без активной транзакции
что я должен делать, пожалуйста?
не помню, если @Transactional будет чюо rk для частных методов, если это не так, попробуйте сделать этот метод общедоступным ... – BretC
Исключение из потока "main" org.springframework.orm.hibernate4.HibernateSystemException: Неизвестный запрос службы [org.hibernate.stat.spi.StatisticsImplementor] ; Вложенное исключение - org.hibernate.service.UnknownServiceException: Неизвестная запрашиваемая услуга [org.hibernate.stat.spi.StatisticsImplementor] \t at org.springframework.orm.hibernate4.SessionFactoryUtils.convertHibernateAccessException (SessionFactoryUtils.java:218) – wmmj23
Попробуйте избавиться of session.close() и sf.close() - материал @Transactional имеет дело с этим для вас – BretC