本文介绍了在类路径资源中定义名称为'entityManagerFactory'的bean时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我对春季和春季启动应用程序相当陌生。在类路径资源中定义名称为'entityManagerFactory'的错误创建bean。它说无法构建EntityManagerFactory。错误显示在控制台中:
org.springframework.beans.factory.BeanCreationException:在类中定义名称'entityManagerFactory'时创建bean时出错路径资源[org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaAutoConfiguration.class]:调用init方法失败;嵌套异常是javax.persistence.PersistenceException:[PersistenceUnit:default]无法在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean上创建EntityManagerFactory (AbstractAutowireCapableBeanFactory.java:1574)在org。 springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) at org。 springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:303) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org .springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) at org.springframework.beans.factory.support.AbstractBeanFac tory.getBean(AbstractBeanFactory.java:194) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:956) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization( AbstractApplicationContext.java:747) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext。 at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686) at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)在org.springframework.boot.SpringApplication.run(SpringApplication.java:957)在org.springframework.boot.SpringApplication.run(SpringApplication.java:946)在vlive.VliveApplication.main(VliveApplication .java:13)导致:javax.p ersistence.PersistenceException:[PersistenceUnit:default]无法在org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)上创建EntityManagerFactory (在org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory中为)(Ejb3Configuration .java:889) at org.springframework.orm.jpa.vendor.SpringHibernateEjbPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateEjbPersistenceProvider.java:51) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java :343) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633 )$ or $ 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanF actory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) ... 15个常用框架省略引起:org.hibernate.HibernateException:当'hibernate.dialect'未设置时连接不能为空在org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:67)处使用org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:97)。 位于org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:172)位于org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) at org .hibernate.cfg.SettingsFactory.buildSettings(SettingsFact ory.java:71) at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2270) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2266) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1735) at org.hibernate.ejb.EntityManagerFactoryImpl。< init>(EntityManagerFactoryImpl.java:84) at org。 hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904) ...省略了21个常见框架application.properties
#Hibernate hibernate.dialect = org。 hibernate.dialect.PostgreSQLDialect hibernate.show_sql = true hibernate.hbm2ddl.auto =创建 #数据库 db.driver = org.postgresql.Driver db.url = jdbc:postgresql:// localhost / vlive db.username = vlive db.password = 1234pom.xml $ b
< de pendencies> < dependency> < groupId> org.springframework.boot< / groupId> < artifactId> spring-boot-starter-web< / artifactId> < /依赖关系> < dependency> < groupId> org.springframework.boot< / groupId> < artifactId> spring-boot-starter-security< / artifactId> < /依赖关系> < dependency> < groupId> org.springframework.boot< / groupId> < artifactId> spring-boot-starter-jdbc< / artifactId> < /依赖关系> < dependency> < groupId> org.springframework.boot< / groupId> < artifactId> spring-boot-starter-data-jpa< / artifactId> < /依赖关系> < dependency> < groupId> org.hsqldb< / groupId> < artifactId> hsqldb< / artifactId> < scope>运行时< / scope> < /依赖关系> < dependency> < groupId> org.hibernate< / groupId> < artifactId> hibernate-entitymanager< / artifactId> < version> 4.0.1.Final< / version> < /依赖关系> < dependency> < groupId> commons-pool< / groupId> < artifactId> commons-pool< / artifactId> < /依赖关系> < dependency> < groupId> org.postgresql< / groupId> < artifactId> postgresql< / artifactId> < version> 9.4-1201-jdbc41< / version> < scope>运行时< / scope> < /依赖关系> < dependency> < groupId> org.jboss.logging< / groupId> < artifactId> jboss-logging< / artifactId> < version> 3.1.0.CR1< / version> < /依赖关系> < dependency> < groupId> org.springframework.boot< / groupId> < artifactId> spring-boot-starter-test< / artifactId> < scope> test< / scope> < /依赖关系> < /依赖关系>DatabaseCongif.java
@Configuration @EnableTransactionManagement public class DatabaseConfig { @Value($ {db.driver}) private字符串DB_DRIVER; @Value($ {db.password}) private String DB_PASSWORD; @Value($ {db.url}) private String DB_URL; @Value($ {db.username}) private String DB_USERNAME; @Value($ {hibernate.dialect}) private String HIBERNATE_DIALECT; @Value($ {hibernate.show_sql}) private String HIBERNATE_SHOW_SQL; @Value($ {hibernate.hbm2ddl.auto}) private String HIBERNATE_HBM2DDL_AUTO; @Bean public DataSource dataSource(){ DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(DB_DRIVER); dataSource.setUrl(DB_URL); dataSource.setUsername(DB_USERNAME); dataSource.setPassword(DB_PASSWORD); 返回dataSource; @Bean public LocalSessionFactoryBean sessionFactory(){ LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource()); 属性hibernateProperties = new Properties(); hibernateProperties.put(hibernate.dialect,HIBERNATE_DIALECT); hibernateProperties.put(hibernate.show_sql,HIBERNATE_SHOW_SQL); hibernateProperties.put(hibernate.hbm2ddl.auto,HIBERNATE_HBM2DDL_AUTO); sessionFactoryBean.setHibernateProperties(hibernateProperties); return sessionFactoryBean; $ div $解析方案你需要使用 LocalContainerEntityManagerBeanFactory 进行管理。它将帮助您更好地管理数据库连接和实体类。
I'm quite new to spring and spring boot application. Getting the error creating bean with name 'entityManagerFactory' defined in class path resource. It says unable to build EntityManagerFactory. Error displayed in console:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build EntityManagerFactory at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:956) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:747) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686) at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) at org.springframework.boot.SpringApplication.run(SpringApplication.java:957) at org.springframework.boot.SpringApplication.run(SpringApplication.java:946) at vlive.VliveApplication.main(VliveApplication.java:13) Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build EntityManagerFactory at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:889) at org.springframework.orm.jpa.vendor.SpringHibernateEjbPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateEjbPersistenceProvider.java:51) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) ... 15 common frames omitted Caused by: org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:97) at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:67) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:172) at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:71) at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2270) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2266) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1735) at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:84) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904) ... 21 common frames omittedapplication.properties
# Hibernate hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect hibernate.show_sql=true hibernate.hbm2ddl.auto=create # Database db.driver=org.postgresql.Driver db.url=jdbc:postgresql://localhost/vlive db.username=vlive db.password=1234pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.0.1.Final</version> </dependency> <dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.4-1201-jdbc41</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.jboss.logging</groupId> <artifactId>jboss-logging</artifactId> <version>3.1.0.CR1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>DatabaseCongif.java
@Configuration @EnableTransactionManagement public class DatabaseConfig { @Value("${db.driver}") private String DB_DRIVER; @Value("${db.password}") private String DB_PASSWORD; @Value("${db.url}") private String DB_URL; @Value("${db.username}") private String DB_USERNAME; @Value("${hibernate.dialect}") private String HIBERNATE_DIALECT; @Value("${hibernate.show_sql}") private String HIBERNATE_SHOW_SQL; @Value("${hibernate.hbm2ddl.auto}") private String HIBERNATE_HBM2DDL_AUTO; @Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(DB_DRIVER); dataSource.setUrl(DB_URL); dataSource.setUsername(DB_USERNAME); dataSource.setPassword(DB_PASSWORD); return dataSource; } @Bean public LocalSessionFactoryBean sessionFactory() { LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource()); Properties hibernateProperties = new Properties(); hibernateProperties.put("hibernate.dialect", HIBERNATE_DIALECT); hibernateProperties.put("hibernate.show_sql", HIBERNATE_SHOW_SQL); hibernateProperties.put("hibernate.hbm2ddl.auto", HIBERNATE_HBM2DDL_AUTO); sessionFactoryBean.setHibernateProperties(hibernateProperties); return sessionFactoryBean; } }解决方案
You need to use LocalContainerEntityManagerBeanFactory for managing. It will help you to manage database connection and entity class in better way.
更多推荐
在类路径资源中定义名称为'entityManagerFactory'的bean时出错
发布评论