I am trying to use SessionFactory to build queries to my Postgresql database. I created a configuration class in which the bean is named SessionFactory. Below I will give the full code of the config class, and exceptions:
import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.util.Properties;
@Configuration
@EnableTransactionManagement
public class HibernateConf {
private Environment env;
public HibernateConf(Environment env) {
this.env = env;
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(
new String[]{"com.baeldung.hibernate.bootstrap.model"});
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(env.getProperty("org.postgresql.Driver"));
dataSource.setUrl(env.getProperty("jdbc:postgresql://localhost:5432/m4BD"));
dataSource.setUsername(env.getProperty("user"));
dataSource.setPassword(env.getProperty("user"));
return (DataSource) dataSource;
}
@Bean
public PlatformTransactionManager hibernateTransactionManager() {
HibernateTransactionManager transactionManager
= new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory().getObject());
return transactionManager;
}
private final Properties hibernateProperties() {
Properties hibernateProperties = new Properties();
hibernateProperties.setProperty(
"hibernate.hbm2ddl.auto", "update");
hibernateProperties.setProperty(
"hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
return hibernateProperties;
}
}
:: Spring Boot :: (v3.1.9)
2024-03-17T11:22:31.810+03:00 INFO 16984 --- [ main] c.l.m4banktask.M4BankTaskApplication : Starting M4BankTaskApplication using Java 17.0.8 with PID 16984 (J:\JAVA_projects\m4BankTask\libs\classes\java\main started by User in J:\JAVA_projects\m4BankTask) 2024-03-17T11:22:31.813+03:00 INFO 16984 --- [ main] c.l.m4banktask.M4BankTaskApplication : No active profile set, falling back to 1 default profile: "default" 2024-03-17T11:22:32.327+03:00 INFO 16984 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2024-03-17T11:22:32.369+03:00 INFO 16984 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 36 ms. Found 1 JPA repository interface. 2024-03-17T11:22:32.742+03:00 INFO 16984 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2024-03-17T11:22:32.750+03:00 INFO 16984 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2024-03-17T11:22:32.751+03:00 INFO 16984 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.19] 2024-03-17T11:22:32.815+03:00 INFO 16984 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2024-03-17T11:22:32.815+03:00 INFO 16984 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 971 ms 2024-03-17T11:22:32.884+03:00 WARN 16984 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'modelController' defined in file [J:\JAVA_projects\m4BankTask\libs\classes\java\main\com\lyuban\m4banktask\controllers\ModelController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'modelServiceImpl' defined in file [J:\JAVA_projects\m4BankTask\libs\classes\java\main\com\lyuban\m4banktask\serviсes\Impl\ModelServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'myJPACriteria': Unsatisfied dependency expressed through field 'sessionFactory': Error creating bean with name 'sessionFactory' defined in class path resource [com/lyuban/m4banktask/configs/HibernateConf.class]: org/springframework/core/type/classreading/ClassFormatException 2024-03-17T11:22:32.886+03:00 INFO 16984 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2024-03-17T11:22:32.893+03:00 INFO 16984 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger :
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2024-03-17T11:22:32.906+03:00 ERROR 16984 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'modelController' defined in file [J:\JAVA_projects\m4BankTask\libs\classes\java\main\com\lyuban\m4banktask\controllers\ModelController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'modelServiceImpl' defined in file [J:\JAVA_projects\m4BankTask\libs\classes\java\main\com\lyuban\m4banktask\serviсes\Impl\ModelServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'myJPACriteria': Unsatisfied dependency expressed through field 'sessionFactory': Error creating bean with name 'sessionFactory' defined in class path resource [com/lyuban/m4banktask/configs/HibernateConf.class]: org/springframework/core/type/classreading/ClassFormatException at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:797) ~[spring-beans-6.0.17.jar:6.0.17] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:236) ~[spring-beans-6.0.17.jar:6.0.17] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1350) ~[spring-beans-6.0.17.jar:6.0.17] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1187) ~[spring-beans-6.0.17.jar:6.0.17] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:558) ~[spring-beans-6.0.17.jar:6.0.17] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:518) ~[spring-beans-6.0.17.jar:6.0.17] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[spring-beans-6.0.17.jar:6.0.17] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.17.jar:6.0.17] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[spring-beans-6.0.17.jar:6.0.17] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-6.0.17.jar:6.0.17] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) ~[spring-beans-6.0.17.jar:6.0.17] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:949) ~[spring-context-6.0.17.jar:6.0.17] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:615) ~[spring-context-6.0.17.jar:6.0.17] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.1.9.jar:3.1.9] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:738) ~[spring-boot-3.1.9.jar:3.1.9] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:440) ~[spring-boot-3.1.9.jar:3.1.9] at org.springframework.boot.SpringApplication.run(SpringApplication.java:324) ~[spring-boot-3.1.9.jar:3.1.9] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317) ~[spring-boot-3.1.9.jar:3.1.9] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-3.1.9.jar:3.1.9] at com.lyuban.m4banktask.M4BankTaskApplication.main(M4BankTaskApplication.java:10) ~[main/:na] Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'modelServiceImpl' defined in file [J:\JAVA_projects\m4BankTask\libs\classes\java\main\com\lyuban\m4banktask\serviсes\Impl\ModelServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'myJPACriteria': Unsatisfied dependency expressed through field 'sessionFactory': Error creating bean with name 'sessionFactory' defined in class path resource [com/lyuban/m4banktask/configs/HibernateConf.class]: org/springframework/core/type/classreading/ClassFormatException
The exception does not provide information about where the problem is located. I do not know how to fix it.