java - 无法将 MySQL 数据库连接到我的 spring 项目(尽管我已阅读所有帖子)

标签 java mysql spring

<分区>

我正在构建一个小型应用程序,使用 google api 和 spring boot,我需要将 mysql 数据库连接到我的项目。

首先:我所有的包裹都在同一个地方(避免这种问题TT) 所以我首先尝试通过克隆项目来使用文档示例(https://spring.io/guides/gs/accessing-data-mysql/) 它返回给我:无法获得 JDBC 连接。

我尝试使用我自己的应用程序,我得到了这个: 创建名为“entityManagerFactory”的 bean 时出错 + 也无法获得 JDBC 连接。

application.properties
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://localhost:8181/testuser
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.properties.hibernate.dialect = 
org.hibernate.dialect.MySQL5Dialect
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

dependencies :
<?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>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.devoteam.presales</groupId>
<artifactId>testspringsecu</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>testspringsecu</name>
<description>Demo project for Spring Boot</description>

<properties>
    <java.version>11</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf</artifactId>
        <version>3.0.11.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.2.3.Final</version>
    </dependency>
    <dependency>
        <groupId>com.google.oauth-client</groupId>
        <artifactId>google-oauth-client</artifactId>
        <version>1.27.0</version>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf-spring5</artifactId>
        <version>3.0.11.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security.oauth.boot</groupId>
        <artifactId>spring-security-oauth2-autoconfigure</artifactId>
        <version>2.1.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web-services</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>js-cookie</artifactId>
        <version>2.1.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.api-client</groupId>
        <artifactId>google-api-client</artifactId>
        <version>1.23.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.oauth-client</groupId>
        <artifactId>google-oauth-client-jetty</artifactId>
        <version>1.23.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.apis</groupId>
        <artifactId>google-api-services-sheets</artifactId>
        <version>v4-rev493-1.23.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>com.vaadin.external.google</groupId>
        <artifactId>android-json</artifactId>
        <version>0.0.20131108.vaadin1</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
<repositories>
    <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>

实体:

package com.devoteam.presales.testspringsecu;


import javax.persistence.Entity;


@Entity
public class UsersDevo {


private Integer ID;
private String email;
private String nom;
private String prenom;
private String service;


public Integer getId() {
    return ID;
}

public void setId(Integer id) {
    this.ID = ID;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getNom() {
    return nom;
}

public void setNom(String nom) {
    this.nom = nom;
}

public String getPrenom() {
    return prenom;
}

public void setPrenom(String prenom) {
    this.prenom = prenom;
}

public String getService() {
    return service;
}

public void setService(String service) {
    this.service = service;
}
}

存储库:

package com.devoteam.presales.testspringsecu;

import com.devoteam.presales.testspringsecu.UsersDevo;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UsersRepo extends CrudRepository<UsersDevo, Long> {

}

测试 Controller :

package com.devoteam.presales.testspringsecu;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller

@RequestMapping(path = "/demo")
public class TestController   {
@Autowired
UsersRepo usersRepo;

@GetMapping(path = "/all")
public @ResponseBody Iterable<UsersDevo> getAllUsers() {
    return usersRepo.findAll();
}

}

主要

package com.devoteam.presales.testspringsecu;

import java.security.Principal;
import java.util.*;

import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;


@SpringBootApplication
@RestController
public class TestspringsecuApplication {


@RequestMapping("/user")
public Principal user(Model model, Principal principal) throws 
JSONException {
    OAuth2Authentication authentication = (OAuth2Authentication) 
principal;

    return principal;
}


@GetMapping("/user")
public ModelAndView method() {
    System.out.println("icila");
    return new ModelAndView("redirect:" + "/");
}

public static void main(String[] args) {

    SpringApplication.run(TestspringsecuApplication.class, args);

  }

}

我也尝试了一堆注释。

编辑:我用 :spring.datasource.url=jdbc:mysql://localhost:8181/testuser?serverTimezone=EST5EDT 修复了文档示例的问题 但我仍然有:rg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' 用我的应用程序

最佳答案

我做到了(经过 looooog 调查)。

答案(对于像我这样的菜鸟)是您的实体必须与您的表完全相同。 我的错误是忘记了@Id @GeneratedValue(strategy= GenerationType.AUTO) 在私有(private)整数 ID 上。 Spring 有时会很痛苦……(经常……)

并且不要忘记数据库 url 之后的 ?serverTimezone=EST5EDT。

我希望能为某人节省一些时间。

关于java - 无法将 MySQL 数据库连接到我的 spring 项目(尽管我已阅读所有帖子),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55593982/

相关文章:

mysql - SQL Server 与MySql 之间传输数据时出现错误,如何解决?

json - 如何在响应正文上添加额外的 header

java - MessageDigest.getInstance(algorithm) 总是抛出 NoSuchAlgorithmException

java - 在java中下载文件时进度条卡住

java - fragment 设置工具栏标题,但显示下一个 fragment 标题

java - ArrayList反序列化只读取一个对象

mysql - Sequelize : TypeError: Converting circular structure to JSON

mysql - 有没有办法在 CREATE TABLE 语句中使用用户定义的变量作为列长度?

java - 如何从请求对象获取客户端 url?

java - 在 Employee 的保存时间时使用 orElseThrow 方法抛出 ConstraintViolationException