2017-02-12 87 views
0

在我的spring boot + hibernate 5應用程序中獲取java.lang.IllegalArgumentException: Property 'sessionFactory' is required。我嘗試自動裝配像這樣SessionFactory異常

@Autowired 
    public void setupSessionFactory(SessionFactory sessionFactory) { 
     setSessionFactory(sessionFactory); 
     getHibernateTemplate().setCheckWriteOperations(false); 
    } 

,也是我想這樣的東西添加到我的配置文件

@Bean 
    public HibernateJpaSessionFactoryBean getSessionFactory() { 
     return new HibernateJpaSessionFactoryBean(); 
    } 

    @Bean 
    public SessionFactory sessionFactory(){ 
     return new LocalSessionFactoryBean().getObject(); 
    } 

    @Bean 
    public HibernateTransactionManager transactionManager(SessionFactory sf) { 
     return new HibernateTransactionManager(sf); 
    } 

我application.yml文件

spring: 
    datasource: 
    url: jdbc:postgresql://localhost:5432/db 
    driver-class-name: org.postgresql.Driver 
    username: postgres 
    password: password 
    jpa: 
    hibernate: 
     ddl-auto: update 

security: 
    basic: 
    enabled: false 

任何想法如何解決這個?

回答

0

這可能是因爲return new LocalSessionFactoryBean().getObject();返回null。

此方法簡單地返回內部字段值:

public SessionFactory getObject() { 
     return this.sessionFactory; 
} 

這是null時默認。

需要配置會話工廠:應該設置dataSource,打包掃描,hibernate屬性。 Something like that:改到

@Bean 
    public LocalSessionFactoryBean sessionFactory() { 
     LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); 
     sessionFactory.setDataSource(restDataSource()); 
     sessionFactory.setPackagesToScan(
     new String[] { "org.baeldung.spring.persistence.model" }); 
     sessionFactory.setHibernateProperties(hibernateProperties()); 

     return sessionFactory; 
    } 
+0

錯誤: 說明: 場ownerRepository在com.jgang.realestate.service.OwnerServiceImpl需要一個名爲 'entityManagerFactory的' 不能被發現豆。 操作: 考慮在您的配置中定義一個名爲'entityManagerFactory'的bean。 – MolecularMan

+0

我不知道什麼是'com.jgang.realestate.service.OwnerServiceImpl',但它肯定是不同的問題,而問題的問題解決了 – Andremoniy

+0

和順便說一句,我可以使用application.yml來設置數據源和休眠屬性? – MolecularMan

相關問題