在我的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
任何想法如何解决这个问题?
答案 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}}