質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
A5:SQL Mk-2

A5:SQL Mk-2は、フリーのSQL開発ツールです。高機能で軽量、且つ分かりやすいことを目指して開発されました。SQLの実行やテーブル編集などの機能に加え、簡単な操作によりDB定義書やER図を自動生成することも可能です。

Hibernate

HibernateとはJava言語のobject-relational mapping (ORM)ライブラリであり、Object/Relational Mappingよりはるか多くの方法でアプリケーションをPOJOで機能付けることができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

13549閲覧

Spring BootでPostgreSQLに接続できない

david56

総合スコア36

A5:SQL Mk-2

A5:SQL Mk-2は、フリーのSQL開発ツールです。高機能で軽量、且つ分かりやすいことを目指して開発されました。SQLの実行やテーブル編集などの機能に加え、簡単な操作によりDB定義書やER図を自動生成することも可能です。

Hibernate

HibernateとはJava言語のobject-relational mapping (ORM)ライブラリであり、Object/Relational Mappingよりはるか多くの方法でアプリケーションをPOJOで機能付けることができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/12/17 02:53

前提・実現したいこと

PostgreSQL12.8から統計データを取得して表示させたいです。
データベース、ユーザーを作り、A5:SQL Mk-2によりデータをインポートし、
ソースを書いてSTSを実行したところ、以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

ネットでログメッセージを調べ、pom.xmlにdependencyを追加、application.propertiesを修正等しましたが、どうやってもPostgreSQLにアクセスしている気配がないため、ご教授お願い致します。

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2021-12-17 09:56:42.521 ERROR 39472 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]: Factory method 'entityManagerFactory' threw exception; nested exception is java.lang.RuntimeException: Driver net.sourceforge.jtds.jdbc.Driver claims to not accept jdbcUrl, jdbc:postgresql://localhost:5432/otnj?user=otnj&sslmode=disable&password=<masked> at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.13.jar:5.3.13] 中略 Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]: Factory method 'entityManagerFactory' threw exception; nested exception is java.lang.RuntimeException: Driver net.sourceforge.jtds.jdbc.Driver claims to not accept jdbcUrl, jdbc:postgresql://localhost:5432/otnj?user=otnj&sslmode=disable&password=<masked> at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.13.jar:5.3.13] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.13.jar:5.3.13] ... 19 common frames omitted Caused by: java.lang.RuntimeException: Driver net.sourceforge.jtds.jdbc.Driver claims to not accept jdbcUrl, jdbc:postgresql://localhost:5432/otnj?user=otnj&sslmode=disable&password=<masked> at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:110) ~[HikariCP-4.0.3.jar:na] 中略 ... 20 common frames omitted

該当のソースコード

pom.xml

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-parent</artifactId> 8 <version>2.6.1</version> 9 <relativePath/> <!-- lookup parent from repository --> 10 </parent> 11 <groupId>com.sct</groupId> 12 <artifactId>OTNJSpring</artifactId> 13 <version>0.0.1</version> 14 <name>OTNJSpring</name> 15 <description>OTNJ Spring Project for Spring Boot</description> 16 <properties> 17 <java.version>11</java.version> 18 </properties> 19 <dependencies> 20 <dependency> 21 <groupId>org.springframework.boot</groupId> 22 <artifactId>spring-boot-starter-thymeleaf</artifactId> 23 </dependency> 24 <dependency> 25 <groupId>org.springframework.boot</groupId> 26 <artifactId>spring-boot-starter-web</artifactId> 27 </dependency> 28 29 <dependency> 30 <groupId>org.postgresql</groupId> 31 <artifactId>postgresql</artifactId> 32 <scope>runtime</scope> 33 </dependency> 34 <dependency> 35 <groupId>org.springframework.boot</groupId> 36 <artifactId>spring-boot-starter-data-jpa</artifactId> 37 </dependency> 38 39 <dependency> 40 <groupId>javax.xml.bind</groupId> 41 <artifactId>jaxb-api</artifactId> 42 </dependency> 43 44 <dependency> 45 <groupId>net.sourceforge.jtds</groupId> 46 <artifactId>jtds</artifactId> 47 </dependency> 48 49 <dependency> 50 <groupId>org.springframework.boot</groupId> 51 <artifactId>spring-boot-starter-jdbc</artifactId> 52 </dependency> 53 54 <dependency> 55 <groupId>org.hibernate</groupId> 56 <artifactId>hibernate-core</artifactId> 57 </dependency> 58 59 <dependency> 60 <groupId>org.hibernate</groupId> 61 <artifactId>hibernate-entitymanager</artifactId> 62 </dependency> 63 64 <dependency> 65 <groupId>org.springframework.boot</groupId> 66 <artifactId>spring-boot-starter-test</artifactId> 67 <scope>test</scope> 68 </dependency> 69 </dependencies> 70 71 <build> 72 <plugins> 73 <plugin> 74 <groupId>org.springframework.boot</groupId> 75 <artifactId>spring-boot-maven-plugin</artifactId> 76 </plugin> 77 </plugins> 78 </build> 79 80</project>

application.properties

properties

1spring.datasource.url=jdbc:postgresql://localhost:5432/otnj?user=otnj&sslmode=disable&password=otnj 2spring.datasource.username=otnj 3spring.datasource.password=otnj 4spring.datasource.driver-class-name=net.sourceforge.jtds.jdbc.Driver 5logging.level.org.hibernate.SQL=DEBUG 6logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE 7logging.level.org.springframework.web=DEBUG 8logging.level.org.hibernate=DEBUG 9spring.jpa.show-sql=true 10spring.jpa.properties.hibernate.format_sql=true

SQL

1create table stat( 2 id integer 3 , row integer 4 , col integer 5 , data double precision not null 6 , constraint stat_pk1 primary key (id, row, col) 7)

Java

1import org.springframework.boot.SpringApplication; 2import org.springframework.boot.autoconfigure.SpringBootApplication; 3 4@SpringBootApplication 5public class OtnjSpringApplication { 6 7 public static void main(String[] args) { 8 SpringApplication.run(OtnjSpringApplication.class, args); 9 } 10 11}

Java

1import java.util.List; 2 3import org.springframework.beans.factory.annotation.Autowired; 4import org.springframework.stereotype.Controller; 5import org.springframework.ui.Model; 6import org.springframework.web.bind.annotation.GetMapping; 7 8@Controller 9public class StatController { 10 @Autowired 11 private StatService statService; 12 13 @GetMapping(value = "/stat") 14 public String displayList(Model model) { 15 List<Stat> statList = statService.searchAll(); 16 model.addAttribute("statList", statList); 17 return "stat"; 18 } 19}

Java

1import java.util.List; 2 3import org.springframework.beans.factory.annotation.Autowired; 4import org.springframework.stereotype.Service; 5 6@Service 7public class StatService { 8 9 @Autowired 10 private StatRepository statRepository; 11 12 public List<Stat> searchAll() { 13 return statRepository.findAll(); 14 } 15}

Java

1import org.springframework.data.jpa.repository.JpaRepository; 2import org.springframework.stereotype.Repository; 3 4@Repository 5public interface StatRepository extends JpaRepository<Stat, StatCell> { 6 7}

Java

1import javax.persistence.Column; 2import javax.persistence.Embeddable; 3 4@Embeddable 5public class StatCell { 6 @Column(name = "id") 7 private Integer id; 8 9 @Column(name = "row") 10 private Integer row; 11 12 @Column(name = "col") 13 private Integer col; 14}

Java

1import java.io.Serializable; 2 3import javax.persistence.Column; 4import javax.persistence.EmbeddedId; 5import javax.persistence.Entity; 6import javax.persistence.IdClass; 7import javax.persistence.Table; 8 9@Entity 10@Table(name="stat") 11@IdClass(value=StatCell.class) 12public class Stat implements Serializable { 13 14 private static final long serialVersionUID = 6501935237628672264L; 15 16 @EmbeddedId 17 private StatCell cell; 18 19 @Column(name = "data") 20 private Double data; 21}

html

1<!DOCTYPE html> 2<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> 3 <head> 4 <title>推移</title> 5 <meta charset="utf-8" /> 6 </head> 7 <body> 8 <h1>推移</h1> 9 <table> 10 <thead> 11 <tr> 12 <th></th> 13 <th></th> 14 </tr> 15 </thead> 16 <tbody> 17 <tr th:each="stat : ${statList}" th:object="${stat}"> 18 <td class="center" th:text="*{row}"></td> 19 <td class="center" th:text="*{data}"></td> 20 </tr> 21 </tbody> 22 </table> 23 </body> 24</html>

試したこと

JDBCのURLとデータ取得をpsqlで確認しました。

bash

1> psql -d 'postgresql://localhost:5432/otnj?user=otnj&sslmode=disable&password=otnj' 2psql (12.8) 3Type "help" for help. 4 5otnj=> select * from stat; 6 id | row | col | data 7----+------+-----+---------- 8 1 | 1964 | 1 | 352832 9 1 | 1965 | 1 | 366649 10 1 | 1966 | 1 | 432937 11省略 12(58 rows) 13 14otnj=>

補足情報(FW/ツールのバージョンなど)

sts-4.13.0.RELEASE

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/12/17 03:11

datasource.urlにクエリストリングがついてるのはなぜでしょう。別途設定値があるなら不要のような
m.ts10806

2021/12/17 03:13

ただ、エラーからすると接続時のエラーではないようにも思います。BeanCreationExceptionですし。
david56

2021/12/17 04:25

コメントありがとうございます。 別途設定値があるならクエリストリングは要らなかったのですね。 クエリストリングを外してもログは変わりません。 ネットで調べてなるべく多くログが出るようにしたつもりですが、もっと詳細に出ないのでしょうか?
guest

回答1

0

ベストアンサー

Caused by: java.lang.RuntimeException: Driver net.sourceforge.jtds.jdbc.Driver claims to not accept jdbcUrl, jdbc:postgresql://localhost:5432/otnj?user=otnj&sslmode=disable&password=<masked>

と言っているので、application.propertiesの設定が間違っているのではないかと。

spring.datasource.url=jdbc:postgresql://localhost:5432/otnj?user=otnj&sslmode=disable&password=otnj

追記。

spring.datasource.url=jdbc:postgresql://localhost:5432/otnj

などにしてもメッセージは変わらないです。

Driver net.sourceforge.jtds.jdbc.Driver となっているので、jdbc:postgresql://localhost:5432/otnjを解釈できるJDBCドライバが存在していないのではないかと。

これ、SQLServerのドライバでは https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds 。この設定を削除すればいい。

spring.datasource.driver-class-name=net.sourceforge.jtds.jdbc.Driver

投稿2021/12/17 04:07

編集2021/12/17 04:44
shiketa

総合スコア4041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

david56

2021/12/17 04:19

ご回答ありがとうございます。 spring.datasource.url=jdbc:postgresql://localhost:5432/otnj などにしてもメッセージは変わらないです。 いずれの場合もpsql -dではきちんと入れるのですが。
david56

2021/12/17 05:02

ご回答ありがとうございます。 削除すると先のエラーはなくなりましたが、新たなエラーが起きました。 2021-12-17 13:42:18.633 ERROR 24184 --- [ main] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Unable to find properties (col, id, row) in entity annotated with @IdClass:Stat Javaコードの方で複合主キーのコーディングがおかしいようです。 調べてみます。
david56

2021/12/17 05:32

加えて@IdClassも不要だったようです。 無事に表示できました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問