2015-11-10 2 views
2

меня следующая конфигурация:HibernateException: нет настроек CurrentSessionContext! весной ботинок

@SpringBootApplication 
public class DemoApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(DemoApplication.class, args); 
    } 
} 

@Configuration 
@EnableTransactionManagement 
@EnableJpaRepositories(basePackageClasses = DemoApplication.class) 
public class JpaConfig implements TransactionManagementConfigurer { 

    @Value("${dataSource.driverClassName}") 
    private String driver; 
    @Value("${dataSource.url}") 
    private String url; 
    @Value("${dataSource.username}") 
    private String username; 
    @Value("${dataSource.password}") 
    private String password; 
    @Value("${hibernate.dialect}") 
    private String dialect; 
    @Value("${hibernate.hbm2ddl.auto}") 
    private String hbm2ddlAuto; 

    @Bean 
    public DataSource configureDataSource() { 
     HikariConfig config = new HikariConfig(); 
     config.setDriverClassName(driver); 
     config.setJdbcUrl(url); 
     config.setUsername(username); 
     config.setPassword(password); 

     return new HikariDataSource(config); 
    } 

    @Bean 
    public LocalContainerEntityManagerFactoryBean configureEntityManagerFactory() { 
     LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); 
     entityManagerFactoryBean.setDataSource(configureDataSource()); 
     entityManagerFactoryBean.setPackagesToScan("com.dataart.cashmashine"); 
     entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); 

     Properties jpaProperties = new Properties(); 
     jpaProperties.put(org.hibernate.cfg.Environment.DIALECT, dialect); 
     jpaProperties.put(org.hibernate.cfg.Environment.HBM2DDL_AUTO, hbm2ddlAuto); 
     entityManagerFactoryBean.setJpaProperties(jpaProperties); 

     return entityManagerFactoryBean; 
    } 

    @Bean 
    public PlatformTransactionManager annotationDrivenTransactionManager() { 
     return new JpaTransactionManager(); 
    } 
    @Bean 
    public SessionFactory sessionFactory(HibernateEntityManagerFactory hemf) { 
     return hemf.getSessionFactory(); 
    } 

} 

application.properties:

dataSource.driverClassName=org.postgresql.Driver 
dataSource.url=jdbc:postgresql://localhost:5432/cash_mashine 
dataSource.username=marc 
dataSource.password=marc 
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect 
hibernate.hbm2ddl.auto=create-drop 

В DAO я пишу следующие строки:

@Autowired 
private SessionFactory sessionFactory; 
@Override 
public CreditCard findCard(String cardNumber) { 
    Session currentSession = sessionFactory.getCurrentSession(); 

, когда выполнять s

sessionFactory.getCurrentSession() 

я вижу следующее сообщение об ошибке:

Caused by: org.hibernate.HibernateException: No CurrentSessionContext configured!

Как это исправить?

ответ

0

Попробуйте добавить @Transactional в метод общедоступной службы, который вызывает DAO.

0
spring: 
    jpa: 
     properties: 
      hibernate: 
       current_session_context_class: org.springframework.orm.hibernate5.SpringSessionContext 

выше config in application.yml может решить эту проблему.

Смежные вопросы