HibernateException:当'hibernate.dialect'未设置但对另一台机器没有问题时,对DialectResolutionInfo的访问不能为空 [英] HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set but works on another machine with no issue
问题描述
我有这个项目在另一台机器上完美工作。我决定在另一个工作上更进一步,我得到了以下错误:
原因:org.springframework.beans .factory.BeanCreationException:无法自动装入字段:com.services.contact.ContactService com.controller.ContactController.contactService;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'contactServiceImpl'的bean时出错:注入自动装配依赖失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装入字段:com.repository.ContactRepository com.services.contact.ContactServiceImpl.contactRepository;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'contactRepository'的bean时出错:无法在设置bean时创建内部bean'(内部bean)#627d8516'[org.springframework.orm.jpa.SharedEntityManagerCreator]类型属性'entityManager';嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为'(内部bean)#627d8516'的bean时出错:设置构造函数参数时无法解析对bean'entityManagerFactory'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:在类路径资源[com / configuration / JpaConfig.class]中定义的名为'entityManagerFactory'的bean创建时出错:通过工厂方法的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[javax.persistence.EntityManagerFactory]:工厂方法'entityManagerFactory'抛出异常;嵌套异常是org.hibernate.HibernateException:当'hibernate.dialect'未在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)中设置
时,DialectResolutionInfo的访问不能为null 〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)〜[spring-beans -4.2.5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)〜[spring-beans-4.2.5。 RELEASE.jar:4.2.5.RELEASE]
... 22个常见框架省略
引起:org.springframework.beans.factory.BeanCreationException:创建名为'contactServiceImpl'的bean时出错:自动注入依赖关系失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装入字段:com.repository.ContactRepository com.services.contact.ContactServiceImpl.contactRepository;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'contactRepository'的bean时出错:无法在设置bean时创建内部bean'(内部bean)#627d8516'[org.springframework.orm.jpa.SharedEntityManagerCreator]类型属性'entityManager';嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为'(内部bean)#627d8516'的bean时出错:设置构造函数参数时无法解析对bean'entityManagerFactory'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:在类路径资源[com / configuration / JpaConfig.class]中定义的名为'entityManagerFactory'的bean创建时出错:通过工厂方法的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[javax.persistence.EntityManagerFactory]:工厂方法'entityManagerFactory'抛出异常;嵌套异常是org.hibernate.HibernateException:当'hibernate.dialect'未在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)中设置
时,DialectResolutionInfo的访问不能为空[ spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)〜[spring-beans-4.2 .5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)〜[spring-beans-4.2.5.RELEASE。 jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5 .RELEASE]
在org.springframework.beans.factory.support.AbstractB eanFactory $ 1.getObject(AbstractBeanFactory.java:306)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton( DefaultSingletonBeanRegistry.java:230)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302 )〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)〜[spring- beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)〜[spring-beans-4.2.5 .RELEASE.jar:4.2.5.RELEASE]
在org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)〜[spring-beans-4.2.5.RELEASE.jar: 4.2.5.RELEASE]
在org.s pringframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory .annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
...省略24个常用框架
由于:org.springframework.beans.factory.BeanCreationException:无法自动装载字段:com.repository.ContactRepository com.services.contact.ContactServiceImpl.contactRepository;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'contactRepository'的bean时出错:无法在设置bean时创建内部bean'(内部bean)#627d8516'[org.springframework.orm.jpa.SharedEntityManagerCreator]类型属性'entityManager';嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为'(内部bean)#627d8516'的bean时出错:设置构造函数参数时无法解析对bean'entityManagerFactory'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:在类路径资源[com / configuration / JpaConfig.class]中定义的名为'entityManagerFactory'的bean创建时出错:通过工厂方法的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[javax.persistence.EntityManagerFactory]:工厂方法'entityManagerFactory'抛出异常;嵌套异常是org.hibernate.HibernateException:当'hibernate.dialect'未在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)中设置
时,DialectResolutionInfo的访问不能为null 〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)〜[spring-beans -4.2.5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)〜[spring-beans-4.2.5。 RELEASE.jar:4.2.5.RELEASE]
...省略35个常见框架
引起:org.springframework.beans.factory.BeanCreationException:创建名为'contactRepository'的bean时出错:无法创建内部bean(内部bean)#627d8516'类型[org.springframework.orm.jpa.SharedEntityMana gerCreator],同时设置bean属性'entityManager';嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为'(内部bean)#627d8516'的bean时出错:设置构造函数参数时无法解析对bean'entityManagerFactory'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:在类路径资源[com / configuration / JpaConfig.class]中定义的名为'entityManagerFactory'的bean创建时出错:通过工厂方法的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[javax.persistence.EntityManagerFactory]:工厂方法'entityManagerFactory'抛出异常;嵌套异常是org.hibernate.HibernateException:当'hibernate.dialect'未在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313)中设置
时,DialectResolutionInfo的访问不能为空[ spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129)〜[spring-beans-4.2 .5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481)〜[spring-beans-4.2.5.RELEASE。 jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5 .RELEASE]
在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto ry.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory .java:482)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:306 )〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)〜[spring- beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)〜[spring-beans-4.2.5 .RELEASE.jar:4.2.5.RELEASE]
在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)〜[spring-beans-4.2.5.RELEASE.jar: 4.2.5.RELEASE]
在org.springframewo rk.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory .support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
位于org.springframework.beans.factory.support.DefaultListableBeanFactory。 resolveDependency(DefaultListableBeanFactory.java:1014)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor .java:545)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
... 37个常见框架省略
由org.springframework.beans.factory引起.BeanCreationException:创建名为'(内部bean)#627d8516'的bean时出错:无法在设置const时解析对bean'entityManagerFactory'的引用原型论证;嵌套异常是org.springframework.beans.factory.BeanCreationException:在类路径资源[com / configuration / JpaConfig.class]中定义的名为'entityManagerFactory'的bean创建时出错:通过工厂方法的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[javax.persistence.EntityManagerFactory]:工厂方法'entityManagerFactory'抛出异常;嵌套异常是org.hibernate.HibernateException:当'hibernate.dialect'未在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)中设置
时,DialectResolutionInfo的访问不能为null [ spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)〜[spring-beans-4.2 .5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:634)〜[spring-beans-4.2.5.RELEASE。 jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:444)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5 .RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(Abst ractAutowireCapableBeanFactory.java:1123)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018 )〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)〜[spring- beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)〜[spring-beans-4.2.5 .RELEASE.jar:4.2.5.RELEASE]
在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299)〜[spring-beans-4.2.5.RELEASE.jar: 4.2.5.RELEASE]
...省略50个常见框架
由org.springframework.beans.factory.BeanCreationException引起:创建bean with名称'entityManagerFactory'在类路径资源[com / configuration / JpaConfig.class]中定义:通过工厂方法的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[javax.persistence.EntityManagerFactory]:工厂方法'entityManagerFactory'抛出异常;嵌套异常是org.hibernate.HibernateException:当'hibernate.dialect'没有在org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)中设置
时,DialectResolutionInfo的访问不能为null [ spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123)〜[spring-beans-4.2 .5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018)〜[spring-beans-4.2.5.RELEASE。 jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5 .RELEASE]
在org.springframework.beans.factory.support.AbstractAutowire CapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject( AbstractBeanFactory.java:306)〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230 )〜[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)〜[spring- beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)〜[spring-beans-4.2.5 .RELEASE.jar:4.2.5.RELEASE]
在org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)〜[spring-beans-4.2.5.RELEASE.jar: 4.2.5.RELEASE]
... 58常见省略框架
引起:org.springframework.beans.BeanInstantiationException:无法实例化[javax.persistence.EntityManagerFactory]:工厂方法'entityManagerFactory'抛出异常;嵌套异常是org.hibernate.HibernateException:当'hibernate.dialect'没有在org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)设置
时,DialectResolutionInfo的访问不能为空[ spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)〜[spring-beans-4.2 .5.RELEASE.jar:4.2.5.RELEASE]
...省略67个常用框架
引起:org.hibernate.HibernateException:当'hibernate.dialect'不能为空时,对DialectResolutionInfo的访问不能为空在org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect中设置
(DialectFactoryImpl.java:104)〜[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:71)〜[hibernate-core-4.3.11.Final.jar:4.3.11.Fina l]
我会尝试包含所有重要文件:
application.properties
spring.mail.host = stmp.gmail.com
spring。 mail.username = ****.******@gmail.com
spring.mail.password =密码
spring.mail.port = 25
spring .datasource.url = jdbc:mysql:// localhost:3306 / personalSite
spring.datasource.username = root
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto =更新
JPA配置
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(com.repository)
public class JpaConfig {
@Bean
public DataSource dataSource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(com.mysql.jdbc.Driver);
dataSource.setUrl(jdbc:mysql:// localhost:3306 / personalSite);
dataSource.setUsername(root);
返回dataSource;
$ b $Bean
public JpaVendorAdapter jpaVendorAdapter(){
HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
jpaVendorAdapter.setDatabase(Database.MYSQL);
jpaVendorAdapter.setGenerateDdl(true);
jpaVendorAdapter.setShowSql(true);
jpaVendorAdapter.setDatabasePlatform(org.hibernate.dialect.MySQL5Dialect);
返回jpaVendorAdapter;
$Be
public EntityManagerFactory entityManagerFactory(){
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan(com.model);
factory.setDataSource(dataSource());
factory.afterPropertiesSet();
返回factory.getObject();
$ b $Bean
public PlatformTransactionManager transactionManager(){
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
返回txManager;
$Be
HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf){
HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
factory.setEntityManagerFactory(emf);
退货工厂;
}
}
ContactServiceImpl
@Component
public class ContactServiceImpl实现ContactService {
@Autowired
StmpMailSender stmpMailSender;
@Autowired
ContactRepository contactRepository;
private String sendTo =drew.jocham@gmail.com;
@Override
public void emailForm(Contact contact){
System.out.println(------------- ---------------------);
System.out.println(我从表单获得了以下内容:);
System.out.println(contact.getId());
System.out.println(contact.getName());
System.out.println(contact.getLastName());
System.out.println(contact.getEmail());
System.out.println(contact.getSubject());
System.out.println(contact.getMessage());
System.out.println(----------------------------------);
// stmpMailSender.send(sendTo,contact.getSubject(),contact.getMessage(),contact.getEmail());
$ b @Override
public void submitFormToDatabase(Contact contact){
contactRepository.save(contact);
}
}
存储库
public interface ContactRepository扩展了CrudRepository< Contact,Long> {
联系保存(联系人联系人);
}
------------ ----- UPDATE 1 -----------------
我注意到这个非常明显的错误,但仍然困惑,因为我将它命名为数据库 personalSite
,并且我创建了与实体相同的表
2016-03-23 20:29:03.963信息36929 --- [main] org.hibernate.Version:HHH000412:Hibernate Core {4.3.11.Final}
2016-03-23 20:29: 03.965 INFO 36929 --- [main] org.hibernate.cfg.Environment:HHH000206:找不到hibernate.properties
2016-03-23 20:29:03.967 INFO 36929 --- [main] org.hibernate。 cfg.Environment:HHH000021:字节码提供程序名称:javassist
2016-03-23 20:29:04.226信息36929 --- [main] o.hibernate.annotations.common.Version:HCANN000001:Hibernate Commons Annotations {4.0 .5.Final}
2016-03-23 20:29:04.479 WARN 36929 --- [main] ohejdbc.internal.JdbcServicesImpl :HHH000342:无法获取连接到查询元数据:未知数据库'personalsite'
factory.setJpaProperties(additionalProperties()); 可以帮助您添加Hibernate.Dialect。因为你的数据库是mySQL,mySQL的hibernate.dialect是org.hibernate.dialect.MySQLDialect
public EntityManagerFactory entityManagerFactory(){
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan(com.model);
factory.setDataSource(dataSource());
factory.afterPropertiesSet();
factory.setJpaProperties(additionalProperties());
返回factory.getObject();
属性additionalProperties(){
属性properties = new Properties();
properties.setProperty(hibernate.dialect,org.hibernate.dialect.MySQLDialect);
返回属性;
}
I had this project working perfectly on another machine. I decided to work on it more on another one and I am getting the below errors:
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.services.contact.ContactService com.controller.ContactController.contactService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contactServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.repository.ContactRepository com.services.contact.ContactServiceImpl.contactRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contactRepository': Cannot create inner bean '(inner bean)#627d8516' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#627d8516': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/configuration/JpaConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
... 22 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contactServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.repository.ContactRepository com.services.contact.ContactServiceImpl.contactRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contactRepository': Cannot create inner bean '(inner bean)#627d8516' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#627d8516': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/configuration/JpaConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
... 24 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.repository.ContactRepository com.services.contact.ContactServiceImpl.contactRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contactRepository': Cannot create inner bean '(inner bean)#627d8516' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#627d8516': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/configuration/JpaConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
... 35 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contactRepository': Cannot create inner bean '(inner bean)#627d8516' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#627d8516': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/configuration/JpaConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
... 37 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#627d8516': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/configuration/JpaConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:634) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:444) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
... 50 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/configuration/JpaConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
... 58 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
... 67 common frames omitted
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:104) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:71) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
I will try to include all the important files:
application.properties
spring.mail.host = stmp.gmail.com
spring.mail.username = ****.******@gmail.com
spring.mail.password = password
spring.mail.port=25
spring.datasource.url= jdbc:mysql://localhost:3306/personalSite
spring.datasource.username=root
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
JPA configuration
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories("com.repository")
public class JpaConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/personalSite");
dataSource.setUsername("root");
return dataSource;
}
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
jpaVendorAdapter.setDatabase(Database.MYSQL);
jpaVendorAdapter.setGenerateDdl(true);
jpaVendorAdapter.setShowSql(true);
jpaVendorAdapter.setDatabasePlatform("org.hibernate.dialect.MySQL5Dialect");
return jpaVendorAdapter;
}
@Bean
public EntityManagerFactory entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.model");
factory.setDataSource(dataSource());
factory.afterPropertiesSet();
return factory.getObject();
}
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
return txManager;
}
@Bean
public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
factory.setEntityManagerFactory(emf);
return factory;
}
}
ContactServiceImpl
@Component
public class ContactServiceImpl implements ContactService {
@Autowired
StmpMailSender stmpMailSender;
@Autowired
ContactRepository contactRepository;
private String sendTo = "drew.jocham@gmail.com";
@Override
public void emailForm(Contact contact) {
System.out.println("----------------------------------");
System.out.println("I got the following from the form:");
System.out.println(contact.getId());
System.out.println(contact.getName());
System.out.println(contact.getLastName());
System.out.println(contact.getEmail());
System.out.println(contact.getSubject());
System.out.println(contact.getMessage());
System.out.println("----------------------------------");
// stmpMailSender.send(sendTo,contact.getSubject(),contact.getMessage(),contact.getEmail());
}
@Override
public void submitFormToDatabase(Contact contact){
contactRepository.save(contact);
}
}
Repository
public interface ContactRepository extends CrudRepository<Contact,Long> {
Contact save(Contact contact);
}
-----------------UPDATE 1-----------------
I noticed this very obvious error but still confused because I name it the database personalSite
and I created the table too same as the entity
2016-03-23 20:29:03.963 INFO 36929 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {4.3.11.Final}
2016-03-23 20:29:03.965 INFO 36929 --- [ main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2016-03-23 20:29:03.967 INFO 36929 --- [ main] org.hibernate.cfg.Environment : HHH000021: Bytecode provider name : javassist
2016-03-23 20:29:04.226 INFO 36929 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
2016-03-23 20:29:04.479 WARN 36929 --- [ main] o.h.e.jdbc.internal.JdbcServicesImpl : HHH000342: Could not obtain connection to query metadata : Unknown database 'personalsite'
Hibernate.Dialect is missing in your code. Below is the fix under entityManagerFactory() method of your configuration class.
factory.setJpaProperties(additionalProperties()); help you to add Hibernate.Dialect. As your database is mySQL, the hibernate.dialect for mySQL is "org.hibernate.dialect.MySQLDialect"
@Bean
public EntityManagerFactory entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.model");
factory.setDataSource(dataSource());
factory.afterPropertiesSet();
factory.setJpaProperties(additionalProperties());
return factory.getObject();
}
Properties additionalProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
return properties;
}
这篇关于HibernateException:当'hibernate.dialect'未设置但对另一台机器没有问题时,对DialectResolutionInfo的访问不能为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!