Pierwsze java.lang.IllegalArgumentException: Property "sessionFactory" is required
w moim wiosennym rozruchu + aplikacja hibernacji 5. Próbuję to tak o tym powiedzieć
@Autowired
public void setupSessionFactory(SessionFactory sessionFactory) {
setSessionFactory(sessionFactory);
getHibernateTemplate().setCheckWriteOperations(false);
}
A także próbowałem dodać takie rzeczy do mojego pliku konfiguracyjnego
@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);
}
Mój plik 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
Wszelkie pomysły, jak to rozwiązać?
Odpowiedzi:
0 dla odpowiedzi № 1Może tak być, ponieważ return new LocalSessionFactoryBean().getObject();
zwraca null.
Ta metoda po prostu zwraca wewnętrzną wartość pola:
public SessionFactory getObject() {
return this.sessionFactory;
}
która jest wartością domyślną.
Fabryka sesji musi zostać skonfigurowana: dataSource powinna być skonfigurowana, spakowana do skanowania, hibernować właściwości. Coś w tym stylu:
@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;
}