首页 > 解决方案 > spring boot中的基本程序。只有一个异常导致失败

问题描述

票务.java

 package com.mysql.model;

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

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Entity
@Table(name= "Ticket")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString

public class Ticket {
    @Id
    @GeneratedValue
private int id;
private double amount;
private String category;
}

票道

package com.mysql.dao;

import java.util.List;


import org.springframework.data.repository.CrudRepository;

import com.mysql.model.Ticket;

public interface TicketDao  extends CrudRepository<Ticket, Integer>{

    void save(List<Ticket> tickets);

}

票务控制器.java

package com.mysql.controller;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.mysql.dao.TicketDao;
import com.mysql.model.Ticket;

@RestController

@RequestMapping("/ticket")
public class TicketController {
    @Autowired
    private TicketDao dao;
    @PostMapping("/bookTickets")
    public String bookTicket(@RequestBody  List<Ticket> tickets) {

    dao.save(tickets);
    return "tickets booked :" + tickets.size();
}

    @GetMapping("/getTickets")
public List<Ticket> getTickets(){
    return (List<Ticket>) dao.findAll();
}



}

主程序

package com.example.springmysql;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringMysqlApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringMysqlApplication.class, args);
    }

}

我在堆栈溢出中发现了相同的异常来下载 jar 文件。但是当我在我的案例中使用它时失败了。这是一个简单的 spring boot mysql crud 应用程序。

运行程序时出现错误 原因:java.net.ConnectException:连接超时:连接原因:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败原因:org.hibernate.tool.schema.spi .SchemaManagementException:无法打开模式管理目标的 JDBC 连接

引起:javax.persistence.PersistenceException:[PersistenceUnit:默认]无法构建Hibernate SessionFactory

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 https://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.2.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-mysql</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-mysql</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-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- Spring boot jdbc dependency -->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-jdbc</artifactId>
     <scope>compile</scope>
</dependency>

<!-- MySql dependency -->
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <scope>compile</scope>
    <!-- <version>4.1.4.Final</version> -->
</dependency>
<dependency>
  <groupId>javax.transaction</groupId>
  <artifactId>javax.transaction-api</artifactId>
  <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    </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>

</project>

应用程序属性

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://169.254.99.155:3306/ticket
spring.datasource.username=root
spring.datasource.password=user789
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MYSQL5Dialect
spring.datasource.tomcat.testWhileIdle = true
spring.datasource.tomcat.timeBetweenEvictionRunsMillis = 60000
spring.datasource.tomcat.validationQuery = SELECT 1

标签: javaspring-bootexceptionerror-handling

解决方案


推荐阅读