/ / SessionFactory wyjątek - java, spring-boot, hibernate-5.x

Wyjątek SessionFactory - java, spring-boot, hibernate-5.x

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 № 1

Moż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;
}