2017-09-06 57 views
0

我在運行Spring應用程序時遇到以下錯誤。請我需要一些幫助來解決這個問題,否則我會很感激,如果有人可以告訴我怎樣才能調試和解決這個問題。我只是通過互聯網,並在我的pom.xml文件中做不同的組合。在類路徑資源中定義名爲'entityManagerFactory'的bean時出錯

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 org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1716) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:499) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:312) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1083) ~[spring-context-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:858) ~[spring-context-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) ~[spring-context-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:122) ~[spring-boot-2.0.0.M3.jar:2.0.0.M3] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) [spring-boot-2.0.0.M3.jar:2.0.0.M3] 
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386) [spring-boot-2.0.0.M3.jar:2.0.0.M3] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) [spring-boot-2.0.0.M3.jar:2.0.0.M3] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1245) [spring-boot-2.0.0.M3.jar:2.0.0.M3] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1233) [spring-boot-2.0.0.M3.jar:2.0.0.M3] 
    at ca.naijaconnects.naijaconnectsproject.NaijaconnectsProjectApplication.main(NaijaconnectsProjectApplication.java:15) [classes/:na] 
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:271) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:858) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:885) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57) ~[spring-orm-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:358) ~[spring-orm-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:384) ~[spring-orm-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:373) ~[spring-orm-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1776) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1712) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3] 
    ... 16 common frames omitted 
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.MYSQL5Dialect] as strategy [org.hibernate.dialect.Dialect] 
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:126) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:194) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:152) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:139) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:133) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.constructDialect(DialectFactoryImpl.java:74) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:51) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final] 
    ... 32 common frames omitted 

這是我的pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
    <project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>ca.naijaconnects</groupId> 
    <artifactId>naijaconnectsProject</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>naijaconnectsProject</name> 
    <description>none</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>2.0.0.M3</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding 
     > 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>tomcat-servlet-api</artifactId> 
    <version>8.0.15</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-jpa</artifactId> 

    </dependency> 
    <!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api --> 
    <dependency> 
    <groupId>javax.persistence</groupId> 
    <artifactId>persistence-api</artifactId> 
    <version>1.0.2</version> 
    </dependency> 

    <dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-rest-core</artifactId> 

    </dependency> 

    <dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 

    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot- 
    starter-data-jpa --> 
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-jpa</artifactId> 

    </dependency> 
    <dependency> 
    <groupId>org.javassist</groupId> 
    <artifactId>javassist</artifactId> 

    </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

    <repositories> 
    <repository> 
     <id>spring-libs-release</id> 
     <name>Spring Releases</name> 
     <url>https://repo.spring.io/libs-release</url> 
     <snapshots> 
      <enabled>false</enabled> 
     </snapshots> 
    </repository> 

     <repository> 
      <id>spring-snapshots</id> 
      <name>Spring Snapshots</name> 
      <url>https://repo.spring.io/snapshot</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </repository> 
     <repository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>https://repo.spring.io/milestone</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-snapshots</id> 
      <name>Spring Snapshots</name> 
      <url>https://repo.spring.io/snapshot</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </pluginRepository> 
     <pluginRepository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>https://repo.spring.io/milestone</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </pluginRepository> 
    </pluginRepositories> 


    </project> 

這是我跑的應用程序

package ca.naijaconnects.naijaconnectsproject; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.AnnotationConfigApplicationContext; 
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; 

@SpringBootApplication 
public class NaijaconnectsProjectApplication { 

    public static void main(String[] args) { 

     ApplicationContext factory = new AnnotationConfigApplicationContext(); 
     SpringApplication.run(NaijaconnectsProjectApplication.class, args); 
    } 
} 

這是我的配置文件

package ca.naijaconnects.naijaconnectsproject.config; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; 

import ca.naijaconnects.naijaconnectsproject.entity.UserLoginDetails; 

@Configuration 
@EnableJpaRepositories 
public class ApplicationConfig 
{ 
    @Bean 
    public UserLoginDetails userLoginDetails() 
    { 
     return new UserLoginDetails(); 
    } 

} 

這是我的控制器

package ca.naijaconnects.naijaconnectsproject.controller; 
import java.util.List; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Bean; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.bind.annotation.RestController; 
import ca.naijaconnects.naijaconnectsproject.entity.UserLoginDetails; 
import ca.naijaconnects.naijaconnectsproject.repo.UserLoginRepo; 
@Controller 
@RequestMapping(value="/testing") 
public class NaijaConnectsController 
{ 
    @Autowired 
    UserLoginRepo userLoginRepo; 
    @SuppressWarnings("unchecked") 
    @RequestMapping(value = "/insertLogins", method = RequestMethod.POST) 
    public @ResponseBody List<UserLoginDetails> PostFormDataJSONArray() { 
     UserLoginDetails userLoginDetail = new UserLoginDetails(); 
     userLoginDetail.setUserName("timisenco"); 
     userLoginDetail.setUserPassword("[email protected]"); 
     return (List<UserLoginDetails>) userLoginRepo.save(userLoginDetail); 
    } 

} 

這是我的實體

package ca.naijaconnects.naijaconnectsproject.entity; 
import java.io.Serializable; 

import javax.persistence.*; 

import org.springframework.context.annotation.Bean; 

@Entity 
//@Table(name = "userlogindetails") 
public class UserLoginDetails 
{ 
    @Id 
    @Column(name = "USER_NAME", nullable = false,columnDefinition="varchar2(40)") 
    private String userName; 

    @Column(name = "USER_Pawword", nullable = false,columnDefinition="varchar2(40)") 
    private String userPassword; 


    public UserLoginDetails() 
    { 

    } 
    @Bean 
    public String getUserName() 
    { 
     return userName; 
    } 
    @Bean 
    public void setUserName(String userName) 
    { 
     this.userName = userName; 
    } 
    @Bean 
    public String getUserPassword() 
    { 
     return userPassword; 
    } 
    @Bean 
    public void setUserPassword(String userPasword) 
    { 
     this.userPassword = userPassword; 
    } 
} 

這是回購

package ca.naijaconnects.naijaconnectsproject.repo; 
import java.util.List; 
import javax.sql.DataSource; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Bean; 
import org.springframework.data.jpa.repository.*; 
import org.springframework.stereotype.Repository; 
import ca.naijaconnects.naijaconnectsproject.entity.UserLoginDetails; 

@org.springframework.data.rest.core.annotation.RepositoryRestResource(exported=false) 

public interface UserLoginRepo extends JpaRepository<UserLoginDetails, String> 
{ 

    //UserLoginDetails findOne(String); 
    @SuppressWarnings("unchecked") 
    UserLoginDetails save(UserLoginDetails account); 
    //UserLoginDetails findByEmailAddress(EmailAddress emailAddress); 
} 

編輯

application.properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
spring.datasource.url=jdbc:mysql://localhost/naijaconnectsdb 
spring.datasource.username=naijaConnects 
[email protected] 
spring.datasource.name=naijaconnectsdb 
spring.jpa.hibernate.ddl-auto=null 
spring.jpa.generate-ddl=true 
spring.jpa.show-sql=true 
spring.data.jpa.repositories.enabled=true 
spring.jpa.database-platform=org.hibernate.dialect.MYSQL5Dialect 

回答

2

嗯,這是一個原因:通常存在一個application.properties文件

Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.MYSQL5Dialect] as strategy [org.hibernate.dialect.Dialect] 

Spring Boot應用。在那裏,你應該已經宣佈冬眠應該使用的方言,並在你的情況下,你已經配置:org.hibernate.dialect.MYSQL5Dialect。我相信那裏有一個錯字,應該是org.hibernate.dialect.MySQL5Dialect(Y中的MYSQL ..應該是小寫的)。

你還可以發佈你的* .properties文件嗎?

所以在你application.properties文件:

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

UPDATE 我編輯應用程序屬性文件來執行以下操作:

application.properties:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
spring.datasource.url=jdbc:mysql://localhost/naijaconnectsdb 
spring.datasource.username=naijaConnects 
[email protected] 
spring.datasource.name=naijaconnectsdb 
spring.jpa.hibernate.ddl-auto=null 
spring.jpa.generate-ddl=true 
spring.jpa.show-sql=true 
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.Impro‌​vedNamingStrategy 
spring.data.jpa.repositories.enabled=true 
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dia‌​lect 
+0

spring.datasource .driver類名= com.mysql.jdbc.Driver spring.datasource.url = JDBC:MySQL的://本地主機/ naijaconnectsdb spring.datasource.username = naijaConnects [email protected] spring.datasource.name = naijaconnectsdb spring.jpa.hibernate.ddl -auto = NULL spring.jpa.generate-DDL =真 spring.jpa.show-SQL =真 spring.jpa.hibernate.naming策略= org.hibernate.cfg.ImprovedNamingStrategy spring.data.jpa。庫。enabled = true spring.jpa.database-platform = org.hibernate.dialect.MYSQL5Dialect – timisenco

+0

我添加了這行spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect但仍顯示相同的錯誤 – timisenco

+0

相同的錯誤'MYSQL5Dialect'或'MySQL5Dialect'? – pleft

相關問題