2015-03-08 119 views
3

我想在这个tutorial的Spring Boot项目中使用Spring Data JPA。这些都是我pom.xml依赖关系:为什么在Spring Boot中使用Spring Data JPA时,我的数据库定制无法应用?

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <scope>runtime</scope> 
    </dependency> 
</dependencies> 

application.properties

# DataSource settings: set here configurations for the database connection 
spring.datasource.url = jdbc:mysql://localhost/dao 
spring.datasource.username = root 
spring.datasource.driverClassName = com.mysql.jdbc.Driver 
spring.datasource.password = 

# Specify the DBMS 
spring.jpa.database = MYSQL 

# Show or not log for each sql query 
spring.jpa.show-sql = true 

# Hibernate settings are prefixed with spring.jpa.hibernate.* 
spring.jpa.hibernate.ddl-auto = update 
spring.jpa.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 
spring.jpa.hibernate.naming_strategy = org.hibernate.cfg.ImprovedNamingStrategy 

,我得到这个错误:

Caused by: org.springframework.beans.factory.BeanCreationException: Cannot   determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath. 
at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.getDriverClassName(DataSourceProperties.java:137) 
at org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource(DataSourceAutoConfiguration.java:117) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiat e(SimpleInstantiationStrategy.java:162) 
... 40 more 

是否有数据源配置问题吗?

回答

1

错误发生在DataSourceProperties.getDriverClassName()方法中。找到相同的源代码,下面从春季分布:当spring.datasource.driverClassName属性为空

if (!StringUtils.hasText(driverClassName)) { 
    throw new BeanCreationException(
     "Cannot determine embedded database driver class for database type " 
      + this.embeddedDatabaseConnection 
      + ". If you want an embedded " 
      + "database please put a supported one on the classpath."); 
} 

春天抛出这个错误。因此,要解决此错误,请确保application.properties位于类路径中。

0

我遇到了同样的错误,我的问题是,application.properties没有打包在 jar中,我没有在启动时提供它。

如果您正在使用java -jar you-jar-name.jar启动,请确保application.properties可用。每文档:

SpringApplication将负载从application.properties文件的属性在以下位置,并将它们添加到春节环境:

一个当前目录的/ config中子目录。 当前目录 甲类路径/配置包 类路径根

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

相关问题