gpt4 book ai didi

java - Spring获取数据库路径时出错

转载 作者:行者123 更新时间:2023-12-02 09:36:56 27 4
gpt4 key购买 nike

我是 Spring boot 的新手,我正在编写一段代码,当我用 postman 的请求点击 Controller 时,该代码将获取我的数据库的路径。但我写的代码给我带来了一个错误。我写的代码是我在google上找到的。我可以得到一些帮助吗?这是我的 Controller 代码:

import org.apache.derby.client.am.SqlException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;

import javax.sql.DataSource;
import javax.validation.Valid;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.List;

@RestController
@RequestMapping("/createBackup")
public class UserController
{

@Autowired
private ApplicationContext appContext;

@GetMapping("/getPath")
public void getPath()
{
DataSource ds = (DataSource)appContext.getBean("dataSource");
Connection conn = null;
DatabaseMetaData dmd = null;
String url = "";
try
{
conn = ds.getConnection();
dmd = conn.getMetaData();
url = url + dmd.getURL();
}
catch(SQLException sqe)
{
sqe.printStackTrace();
}
System.out.println(url);
}
}

我使用 postman 来点击这个 Controller 并获取我的数据库的路径。现在我正在控制台上打印它,但是这个错误让我很烦恼。

服务完美启动。但是当我通过 postman 的请求点击这个 Controller 时,我收到了这个错误:

java.lang.AbstractMethodError: org.apache.derby.client.net.NetConnection.isValid(I)Z
at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:454) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:421) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:374) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) ~[HikariCP-3.2.0.jar:na]
...................................and on and on it goes..............................

最佳答案

您的 derby 驱动程序实现和 JDBC API 之间存在差异。

这里回答了类似的问题: spring 3, hibernate, dbcp and derby connection issue

如果可能,请使用最新版本的 derby 驱动程序,并结合最新版本的 Spring boot。可以在此处找到带有 Spring boot/derby 的简单 Rest Controller 的示例: https://github.com/springframeworkguru/spring-boot-apache-derby-example/tree/master/src/main/java/guru/springframework

请注意,如果您想从数据源获取信息,注入(inject) bean 会更容易:

@Autowired
private Datasource ds;

比得到它

DataSource ds = (DataSource)appContext.getBean("dataSource");

关于java - Spring获取数据库路径时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57428816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com