title: Spring boot hibernate no transaction is in progress
body: <p>I'm using spring boot and it perfectly makes me entity manager. And I decided to test getting session factory from the entity manager and to use it for an example. But I get the next problem:<code>javax.persistence.TransactionRequiredException: no transaction is in progress</code> </p>
  
  <p>properties </p>
  
  <pre><code>spring.datasource.url= jdbc:postgresql://localhost:5432/ring
  spring.datasource.username=postgres
  spring.datasource.password=root
  
  spring.jpa.show-sql = false
  spring.jpa.properties.hibernate.format_sql=false
  
  #Note: The last two properties on the code snippet above were added to suppress an annoying exception
  # that occurs when JPA (Hibernate) tries to verify PostgreSQL CLOB feature.
  spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL9Dialect
  spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
  
  spring.jpa.properties.hibernate.current_session_context_class = org.springframework.orm.hibernate5.SpringSessionContext
  </code></pre>
  
  <p>service class</p>
  
  <pre><code>package kz.training.springrest.service;
  
  import kz.training.springrest.entity.User;
  import org.hibernate.Session;
  import org.hibernate.SessionFactory;
  import org.springframework.stereotype.Service;
  import org.springframework.transaction.annotation.Transactional;
  
  import javax.persistence.EntityManager;
  import javax.persistence.EntityManagerFactory;
  import javax.persistence.PersistenceContext;
  import javax.persistence.PersistenceUnit;
  
  @Service
  public class UserService {
  
      @PersistenceContext
      private EntityManager entityManager;
  
      @Transactional
      public void insertUser(User user) {
          SessionFactory sessionFactory = entityManager.unwrap(Session.class).getSessionFactory();
          Session session = sessionFactory.getCurrentSession();
          session.save(user);
      }
  
  }
  </code></pre>
  
  <p>runner</p>
  
  <pre><code>package kz.training.springrest.run;
  
  import org.springframework.boot.SpringApplication;
  import org.springframework.boot.autoconfigure.SpringBootApplication;
  import org.springframework.boot.autoconfigure.domain.EntityScan;
  import org.springframework.context.annotation.ComponentScan;
  import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
  import org.springframework.transaction.annotation.EnableTransactionManagement;
  
  @SpringBootApplication
  @EntityScan("kz.training.springrest.entity")
  @EnableTransactionManagement
  @ComponentScan(basePackages="kz.training.springrest")
  public class SpringrestApplication {
  
      public static void main(String[] args) {
          SpringApplication.run(SpringrestApplication.class, args);
      }
  }
  </code></pre>
  
  <p>Do you have any ideas how to solve it?</p>