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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Spring Boot

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

Q&A

解決済

1回答

1217閲覧

JPAをつかったspring bootを起動させたい

yys949

総合スコア9

Java

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

Spring Boot

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

0グッド

1クリップ

投稿2020/05/13 11:34

実現したいこと

STSでSpring Bootプロジェクトを起動させたい

Spring Bootの勉強しようとSTSのspringスタータープロジェクトを使いプロジェクトを作ったのですが、プロジェクトを作る際にSpring Data JPAを選択するとtomcatが起動はするもののすぐにエラーが出て停止してしまいます。

依存関係に以下のものを選択しています。
Spring Web、Spring Data JPA、Spring Boot DevTools、Thymeleaf、MySQL Driver

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

2020-05-13 20:23:01.568 INFO 24820 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2020-05-13 20:23:01.568 INFO 24820 --- [ restartedMain] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 885 ms 2020-05-13 20:23:01.677 INFO 24820 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2020-05-13 20:23:01.705 INFO 24820 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.15.Final 2020-05-13 20:23:01.770 INFO 24820 --- [ restartedMain] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final} 2020-05-13 20:23:01.824 INFO 24820 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2020-05-13 20:23:03.043 ERROR 24820 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.20.jar:8.0.20] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5.4.15.Final.jar:5.4.15.Final] at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:43) ~[hibernate-core-5.4.15.Final.jar:5.4.15.Final] ... 40 common frames omitted

application.properties

1spring.datasource.url=jdbc:mysql://localhost/sampledb?characterEncoding=UTF-8&serverTimezone=JST 2spring.datasource.username=root 3spring.datasource.password= 4spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver 5spring.jpa.database=MYSQL 6spring.jpa.hibernate.ddl-auto=update

build.gradle

1plugins { 2 id 'org.springframework.boot' version '2.2.7.RELEASE' 3 id 'io.spring.dependency-management' version '1.0.9.RELEASE' 4 id 'java' 5} 6 7group = 'com.training' 8version = '0.0.1-SNAPSHOT' 9sourceCompatibility = '11' 10 11configurations { 12 developmentOnly 13 runtimeClasspath { 14 extendsFrom developmentOnly 15 } 16} 17 18repositories { 19 mavenCentral() 20} 21 22dependencies { 23 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 24 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 25 implementation 'org.springframework.boot:spring-boot-starter-web' 26 developmentOnly 'org.springframework.boot:spring-boot-devtools' 27 runtimeOnly 'mysql:mysql-connector-java' 28 testImplementation('org.springframework.boot:spring-boot-starter-test') { 29 exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' 30 } 31} 32 33test { 34 useJUnitPlatform() 35} 36

コンソールの出力されるメッセージが長すぎて投稿できないため省略しました。

試したこと

SQLErrorと出ているためapplication.propertiesが悪いのかと思いましたが、悪いところが見つからず、別で新規にJPAではなくJBDCを選択したら問題なく起動できていました。
JBDCで起動できてJPAでできないということは依存関係が何かおかしいのかと思ったのですが、調べてもよくわからないでいます。

上記エラーを解消し起動させるためには何処を修正したらいいか教えていただきたいです。
よろしくお願いします。

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

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

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

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

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

Yasumichi

2020/05/13 11:43 編集

【誤投稿です】
rubytomato

2020/05/13 11:40

> java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO) エラーメッセージの通り、起動時にMySQLサーバーにログインできなかったことが原因だと思います。 JDBCで起動できたということですが、JDBCを使ったデータベース接続は成功したのでしょうか? おそらく単に起動できただけで接続はできないのではないかと思います。 application.propertiesにパスワードを記述してもう一度ご確認ください。
m.ts10806

2020/05/13 11:48

×JBDC ○JDBC https://ja.wikipedia.org/wiki/JDBC 文章中とはいえこの手の間違いを気にできるようになりましょう。 そもそもですが、「依存関係がおかしい」のでしたら、パッケージインストールやEclipseのチェックで引っかかるはずです。
yys949

2020/05/13 11:54 編集

記載ミスのご指摘ありがとうございます。 確認せず投稿してしまっていました。気を付けるようにします。 おっしゃる通りJDBCも起動だけで接続はしていませんでした。(単に起動させるだけだったため接続できるか確認しませんでした。) ご指摘いただいたapplication.propertiesを見直しました。 非常に情けないのですが、接続するDB名を間違えていました。 パスワードを入力しても起動できなかったため、パスワード間違えたかと思いMySQLを確認したのですが、その際にDBをみたらそもそもapplication.propertiesに記載していたsampledbが存在しませんでした。 存在するDB名にしてパスワードも記入したら起動しました。 起動しただけなのでDBに接続できているかはわからないですが、、、
rubytomato

2020/05/13 11:57

> 存在するDB名にしてパスワードも記入したら起動しました。 > 起動しただけなのでDBに接続できているかはわからないですが、、、 JPAの話をされているのであれば、アプリケーションが起動できたということはデータソースの作成も出来ているということだと思いますので、データベースに接続できていると思います。 MySQL側で SHOW PROCESSLIST でセッションを確認してみてください。
m.ts10806

2020/05/13 11:59

起動時にspring.datasource~~の設定値で接続しにいきますし、 失敗したらそもそも起動できず異常終了するので問題ありません。
yys949

2020/05/13 12:24

>>m.ts10806 ありがとうございます。 MySQL側でSHOW PROCESSLISTをやったところ指定したDBに接続できているようでした。 >>m.ts10806 どこを見ているのかが見れていなかったです。 ありがとうございます。
guest

回答1

0

自己解決

application.propertiesの接続先DBに存在しないDB名を指定していたこと、passwordを入力していなかったことが原因でした。

投稿2020/05/13 12:30

yys949

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問