Не удалось настроить исключение инициализации контекста получения спящего режима. Пробовали альтернативные версии зависимости Hibernate, и хотя таблица создается в БД, я думаю, что существует некоторая проблема, связанная с Bean.
Студент
Код: Выделить всё
package com.spring.orm.Entity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name = "student")
public class Student {
@Id
@Column(name = "student_id")
private long studentId;
@Column(name = "student_name")
private String studentName;
@Column(name = "student_city")
private String studentCity;
public long getStudentId() {
return studentId;
}
public void setStudentId(long studentId) {
this.studentId = studentId;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public String getStudentCity() {
return studentCity;
}
public void setStudentCity(String studentCity) {
this.studentCity = studentCity;
}
public Student() {
}
public Student(long studentId, String studentName, String studentCity) {
this.studentId = studentId;
this.studentName = studentName;
this.studentCity = studentCity;
}
}
Код: Выделить всё
package com.spring.orm.Dao;
import com.spring.orm.Entity.Student;
public interface StudentDao {
public Student insert(Student student);
}
Код: Выделить всё
package com.spring.orm.Dao.Impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate;
import com.spring.orm.Dao.StudentDao;
import com.spring.orm.Entity.Student;
public class StudentDaoImpl implements StudentDao{
@Autowired
private HibernateTemplate hibernateTemplate;
@Override
public Student insert(Student student) {
Student st = (Student) hibernateTemplate.save(student);
return st;
}
}
Код: Выделить всё
package com.spring.orm.Config;
import java.io.IOException;
import java.util.Properties;
import javax.sql.DataSource;
import org.hibernate.SessionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.spring.orm.Dao.Impl.StudentDaoImpl;
import com.spring.orm.Entity.Student;
@Configuration
@EnableTransactionManagement
public class HibernateConfig {
@Bean
public Properties getHibernateProperties(){
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect");
properties.setProperty("hibernate.show_sql", "true");
properties.setProperty("hibernate.hbm2ddl.auto", "update");
System.out.println("Настроенные свойства Hibernate");
возвращаемые свойства;
@Bean
public DriverManagerDataSource getDataSource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql: //localhost:3306/springjdbc");
dataSource.setUsername("root");
dataSource.setPassword("qwsx##HG##123");
System.out. println("Настроенный источник данных");
return dataSource;
@Bean
public LocalSessionFactoryBean getSessionFactory(){
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean( );
sessionFactory.setDataSource(getDataSource());
sessionFactory.setHibernateProperties(getHibernateProperties());
sessionFactory.setPackagesToScan("com.spring.orm.Entity");
> System.out.println("Настроенная фабрика сеансов");
return sessionFactory;
@Bean(name = "hibernateTemplate")
public HibernateTemplate getHibernateTemplate (){
HibernateTemplate hibernateTemplateObj = new HibernateTemplate();
hibernateTemplateObj.setSessionFactory(getSessionFactory().getObject());
return hibernateTemplateObj;
@Bean
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(getSessionFactory().getObject());
return transactionManager;
@Bean(name = "studentImpl")
public StudentDaoImpl getStudentDao(){
StudentDaoImpl StudentDaoImpl = new StudentDaoImpl();
return StudentDaoImpl ;
}
}
Код: Выделить всё
package com.spring.orm;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.spring.orm.Config.HibernateConfig;
import com.spring.orm.Dao.StudentDao;
import com.spring.orm.Entity.Student;
/\*\*
* Hello world!
*
\*/
public class App
{
public static void main( String\[\] args )
{
System.out.println( "Application started!" );
ApplicationContext context = new AnnotationConfigApplicationContext(HibernateConfig.class);
StudentDao stDaoObj = context.getBean("studentImpl", StudentDao.class);
Student st = new Student();
st.setStudentId(44);
st.setStudentName("Harshit Gupta");
st.setStudentCity("Karera");
stDaoObj.insert(st);
}
}
Код: Выделить всё
4.0.0
com.spring.orm
springorm
1.0-SNAPSHOT
jar
springorm
http://maven.apache.org
UTF-8< /project.build.sourceEncoding>
org.springframework
spring-core
6.1.3
org.springframework
spring-context
6.1.3
org.springframework
spring-orm
6.1.3< /version>
< br />
org.hibernate.orm
hibernate-core
6.1.7.Final
org.apache.tomcat
tomcat-dbcp
9.0.80
com.mysql
mysql-connector-j
8.3.0
junit
junit
3.8.1
test
Код: Выделить всё
Application started! Configured Hibernate properties Configured datasource Configured session factory Mar 10, 2024 9:04:26 AM org.hibernate.Version logVersion INFO: HHH000412: Hibernate ORM core version 6.1.5.Final Mar 10, 2024 9:04:27 AM org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl logSelectedDialect INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect Mar 10, 2024 9:04:27 AM org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl logSelectedDialect WARN: HHH90000026: MySQL8Dialect has been deprecated; use org.hibernate.dialect.MySQLDialect instead Mar 10, 2024 9:04:27 AM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] Mar 10, 2024 9:04:27 AM org.springframework.context.support.AbstractApplicationContext refresh WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in com.spring.orm.Config.HibernateConfig: Failed to instantiate [org.springframework.orm.hibernate5.HibernateTemplate]: Factory method 'getHibernateTemplate' threw exception with message: org/hibernate/criterion/Criterion Exception in thread "main" org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «hibernateTemplate», определенным в com.spring.orm.Config.HibernateConfig: не удалось создать экземпляр [org.springframework.orm.hibernate5.HibernateTemplate]: фабричный метод «getHibernateTemplate» выдал исключение с сообщением: org/hibernate/criterion/Criterion
в org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)
в org.springframework.beans.factory. support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:485)
в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1334)
в org.springframework.beans. завод. support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1164)
на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561)
на org.springframework.beans.factor й. support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
на org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
на org.springframework.beans .factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
на org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
на org.springframework.beans .factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975)
в org.springframework.context .support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:959)
в org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
в org.springframework.context.annotation.AnnotationConfigApplicationContext .(AnnotationConfigApplicationContext.java:93)
в com.spring.orm.App.main(App.java:20)
Вызвано: org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.orm.hibernate5.HibernateTemplate]:
Фабричный метод getHibernateTemplate выдал исключение с сообщением: org/hibernate/criterion/Criterion
в org.springframework.beans.factory.support.SimpleInstantiationStrategy. экземпляр(SimpleInstantiationStrategy.java:177)
в org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:647)
... еще 14 Вызвано: java.lang.NoClassDefFoundError : org/hibernate/criterion/Criterion
на com.spring.orm.Config.HibernateConfig.getHibernateTemplate(HibernateConfig.java:57)
на com.spring.orm.Config.HibernateConfig$$SpringCGLIB$$0 .CGLIB$getHibernateTemplate$3()
в com.spring.orm.Config.HibernateConfig$$SpringCGLIB$$FastClass$$1.invoke()
в org.springframework.cglib. proxy.MethodProxy.invokeSuper(MethodProxy.java:258)
в org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
в com.spring.orm.Config. HibernateConfig$$SpringCGLIB$$0.getHibernateTemplate()
в java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
в java.base/java.lang .reflect.Method.invoke(Method.java:580)
в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140)
... еще 15 Причина: java.lang.ClassNotFoundException: org.hibernate.criterion.Criterion
в java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
в java.base/jdk.internal .loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
на java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ... еще 24
Источник: https://stackoverflow.com/questions/781 ... g-a-hibern