简体   繁体   English

从 spring 工具套件连接到数据库时出错

[英]Getting error while connecting to database from spring tool suite

Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration': Unsatisfied dependency expressed through constructor parameter 0;创建名为“org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration”的bean时出错:通过构造函数参数0表示的依赖关系不满足; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名称为“dataSource”的 bean 时出错; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [com.zaxxer.hikari.HikariDataSource]:工厂方法 'dataSource' 抛出异常; nested exception is java.lang.IllegalStateException: Cannot load driver class: oracle.jdbc.driver.OracleDriver嵌套异常是 java.lang.IllegalStateException: 无法加载驱动程序 class: oracle.Z84BEFFD3A0D49AdriverCE7663

pom.xml file https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 pom.xml 文件 https://maven.apache.org/xsd/maven-4.0.0.xsd">4.

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
</parent>
<groupId>com.Projectdashboardtool</groupId>
<artifactId>Project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Project</name>
<description>Demo project for Spring Boot</description>

<properties>
    <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-data-jpa</artifactId>
    </dependency>
    <!-- <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
    </dependency> -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    <!-- <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web-services</artifactId>
    </dependency> -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc8</artifactId>
        <version>12.1.0</version>      
    </dependency> 

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

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

Controller class Controller class

@RestController
@RequestMapping("/project")
public class ProjectController {

    @Autowired
    private ProjectRepository projectRepository;

    @GetMapping
    public List<Project> list(){
        //List<Project> project=new ArrayList<>();
        return projectRepository.findAll();
    }

    @PostMapping
    @ResponseStatus(HttpStatus.OK)
    public void create(@RequestBody Project project) {
        projectRepository.save(project);

    }

    @GetMapping("/{id}")
    public Project get(@PathVariable("id") long id) {
        return projectRepository.getOne(id);

    }
}

Model class Model class

package com.Projectdashboardtool.Project.Model;

import java.sql.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@Entity
@JsonIgnoreProperties({"hiberanateLazyInitializer", "handler"})
public class Project {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;
    private String dg_number;
    private String project;
    private String release_level;
    private String release_area;
    private String release_number;

    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd-MM-yyyy")
    private Date planned_release_date;
    private Date release_date;

    public String getDg_number() {
        return dg_number;
    }
    public void setDg_number(String dg_number) {
        this.dg_number = dg_number;
    }
    public String getProject() {
        return project;
    }
    public void setProject(String project) {
        this.project = project;
    }
    public String getRelease_level() {
        return release_level;
    }
    public void setRelease_level(String release_level) {
        this.release_level = release_level;
    }
    public String getRelease_area() {
        return release_area;
    }
    public void setRelease_area(String release_area) {
        this.release_area = release_area;
    }
    public String getRelease_number() {
        return release_number;
    }
    public void setRelease_number(String release_number) {
        this.release_number = release_number;
    }
    public Date getPlanned_release_date() {
        return planned_release_date;
    }
    public void setPlanned_release_date(Date planned_release_date) {
        this.planned_release_date = planned_release_date;
    }
    public Date getRelease_date() {
        return release_date;
    }
    public void setRelease_date(Date release_date) {
        this.release_date = release_date;
    }
    public String getRelease_type() {
        return release_type;
    }
    public void setRelease_type(String release_type) {
        this.release_type = release_type;
    }
    private String release_type;

    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    @Override
    public String toString() {
        return "Project [id=" + id + ", dg_number=" + dg_number + ", project=" + project + ", release_level="
                + release_level + ", release_area=" + release_area + ", release_number=" + release_number
                + ", planned_release_date=" + planned_release_date + ", release_date=" + release_date
                + ", release_type=" + release_type + "]";
    }

}

application.properties file
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.SQLServer2012Dialect
spring.datasource.url=jdbc:oracle:thin:@//hostname/servicename
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

Adding dependency:添加依赖:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>12.1.0</version>      
</dependency>

And correct hibernate dialect - org.hibernate.dialect.OracleDialect should work.并且正确的 hibernate 方言 - org.hibernate.dialect.OracleDialect应该可以工作。

I think you are using property file for DB oracle.我认为您正在使用 DB oracle 的属性文件。 From your exception i can able to see spring boot failed to load oracle driver.从您的异常中,我可以看到 spring 引导无法加载 oracle 驱动程序。 So download ojdbc6.jar from Oracle website or if you install oracle11g in your local system you can find ojdbc in jdbc/lib folder.因此,从 Oracle 网站下载 ojdbc6.jar 或者如果您在本地系统中安装 oracle11g,您可以在 jdb.lib 文件夹中找到 ojdbc。

add this to your project, On eclipse right click on project --> build path --> add this jar.将此添加到您的项目中,在 eclipse 上右键单击项目 --> 构建路径 --> 添加此 jar。

So suppose you are using spring boot add this dependency to your pom.xml因此,假设您使用 spring 引导将此依赖项添加到您的 pom.xml

<dependency>
 <groupId>com.oracle</groupId>
 <artifactId>ojdbc6</artifactId>
 <version>11.2.0</version>//add letest version
</dependency>

Suppose if your dependency not detected by maven follow the below steps:-假设如果 maven 未检测到您的依赖项,请按照以下步骤操作:-

Run this command运行此命令

mvn install:install-file - Dfile=C:\Users\user\.m2\repository\com\oracle\ojdbc6\11.2.0\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

Then You can Use this.然后你可以使用这个。

Oracle JDBC drivers are available on Central Maven. Oracle JDBC 驱动程序可在中央 Maven 上获得。 Check out this blog .看看这个博客 You can add this GAV for 18.3 JDBC driver.您可以为 18.3 JDBC 驱动程序添加此 GAV。

<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>18.3.0.0</version>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM