SessionFactory异常

时间:2017-02-12 14:06:11

标签: java spring-boot hibernate-5.x

在我的spring boot + hibernate 5应用程序中获取java.lang.IllegalArgumentException: Property 'sessionFactory' is required。我尝试像这样自动装载

@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

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

可能是因为 @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; } 返回null。

此方法只返回内部字段值:

select m.* ,u.*
    from
      messages m
      inner join (
            select max(id) as maxid
            from messages
            where messages.fromUser = "$myUsreId"
            OR messages.forUser = "$myUsreId"             
            group By (if(fromUser > forUser,  fromUser, forUser)), 
            (if(fromUser > forUser,  forUser, fromUser))
           ) t1 on m.id=t1.maxid 
      join 
      users u  ON u.id = (CASE WHEN m.fromUser = "$myUsreId"
                             THEN m.forUser
                             ELSE m.fromUser        
                         END)

默认为null。

需要配置会话工厂:应设置dataSource,扫描包,休眠属性。 https://trac.macports.org/wiki/FAQ#usrlocal

{{1}}