🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Spring Boot

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

Q&A

解決済

2回答

2287閲覧

MySQL+Spring bootでCRUDアプリを作った際のBeanCreationExceptionとAnnotationExceptionの解決方法を教えて頂きたい

ayumu1220

総合スコア5

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Spring Boot

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

0グッド

0クリップ

投稿2020/12/03 12:45

編集2020/12/06 08:18

前提・実現したいこと

作成したCRUDアプリのエラーメッセージBeanCreationExceptionやAnnotationExceptionを解決したい

###質問に至った経緯
Mysql,Spring boot でCRUDができるアプリを作成している初心者です。

####https://qiita.com/monjara/items/5ef4afee2172750323a9

このサイトの指示に従いコードをそのまま貼り付け作成したアプリをSpringBootで起動しようとしたところ、エラーが発生してアプリが動かず、localhost:8080に接続できません。

今まではポスグレで接続していたため今回が初のMysqlとなりDB接続は確認していません。現在調査中です。
ほかにはMysqlのポート開放やファイアウォールの設定などもしていません。

time zone(文字化け)エラーとPublick key エラーまでは以下のコードの追加で解決しました。
現在12時間スタックしています、よろしくお願いします。

addPointApplicationProperty

1spring.datasource.url=jdbc:mysql://localhost:3306/productdb?allowPublicKeyRetrieval=true&setAutoCommit=false&useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

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

StackTrace

12020-12-03 21:07:50.917 WARN 10308 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 22020-12-03 21:07:51.955 WARN 10308 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'productRepository' defined in com.example.productmanager.repository.ProductRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot resolve reference to bean 'jpaMappingContext' while setting bean property 'mappingContext'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.example.productmanager.entity.Product 32020-12-03 21:07:51.957 WARN 10308 --- [ main] o.s.b.f.support.DisposableBeanAdapter : Invocation of destroy method failed on bean with name 'entityManagerFactory': org.hibernate.AnnotationException: No identifier specified for entity: com.example.productmanager.entity.Product 42020-12-03 21:07:52.055 ERROR 10308 --- [ main] o.s.boot.SpringApplication : Application run failed 5 6org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'productRepository' defined in com.example.productmanager.repository.ProductRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot resolve reference to bean 'jpaMappingContext' while setting bean property 'mappingContext'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.example.productmanager.entity.Product 7 at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:342) ~[spring-beans-5.2.11.RELEASE.jar:5.2.11.RELEASE] 8 at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:113) ~[spring-beans-5.2.11.RELEASE.jar:5.2.11.RELEASE] 9com.example.productmanager.ProductManagerApplication.main(ProductManagerApplication.java:10) ~[classes/:na] 10 11Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is org.hibernate.AnnotationExc 12eption: No identifier specified for entity: com.example.productmanager.entity.Product 13 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1794) ~[spring-beans-5.2.11.RELEASE.jar:5.2.11.RELEASE] 14 15Caused by: org.hibernate.AnnotationException: No identifier specified for entity: com.example.productmanager.entity.Product 16 at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:231) ~ 17 18~大半のatを省略~ 19 20

該当のソースコード

Productjava

1package com.example.productmanager.entity; 2 3import javax.persistence.Entity; 4import javax.persistence.GeneratedValue; 5import javax.persistence.GenerationType; 6import javax.persistence.Id; 7import javax.persistence.Transient; 8 9import lombok.Data; 10 11 12@Data 13@Entity 14public class Product { 15 private Long id; 16 private String name; 17 private String brand; 18 private String madein; 19 private float price; 20 21 @Transient 22 @Id 23 @GeneratedValue(strategy = GenerationType.IDENTITY) 24 public Long getId() { 25 return id; 26 } 27}

applicationProperty

1spring.jpa.database=MYSQL 2spring.datasource.platform=mysql 3#spring.datasource.url=jdbc:mysql://localhost:3306/productdb?setAutoCommit=false&useSSL=false←元のソースコード 4spring.datasource.url=jdbc:mysql://localhost:3306/productdb?allowPublicKeyRetrieval=true&setAutoCommit=false&useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC 5spring.datasource.username=productuser 6spring.datasource.password=productpass 7spring.jpa.hibernate.ddl-auto=none 8logging.level.root=WARN

###ファイル構成
イメージ説明

試したこと

####追記:元のサイトでは記述はないですがlombok.jarをSTSに追加してるようで、Productクラスのidプロパティのsetter methodが見つからないというエラーから、lombokの自動追加機能が必要になってる説が出てきました。lombok.jarでSTSを選択するとダブルクリックで開かなくなってしまいます。
↑何か意見を頂きたいです。

Entityへの@Transientアノテーションの追加
import javaxの見直し
mysqlポート開放
ProductRepository.javaへの@Repository追加

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

環境
Windows10
STS4
MySQL8.0

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

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

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

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

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

guest

回答2

0

再現環境を作って確かめたわけじゃないので
外してるかもしれませんが…。

ProductRepositoryインターフェイスに、
@Repositoryアノテーションが必要じゃないでしょうか。

java

1@Repository 2public interface ProductRepository extends JpaRepository<Product, Long> { 3 ...

投稿2020/12/03 13:53

gpsoft

総合スコア1323

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

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

ayumu1220

2020/12/04 10:49 編集

回答ありがとうございます! @Repositoryを追加したところ以下のスタックトレース文章が表示されました ERROR HikariPool-1 - Exception during pool initialization java.sql.SQLException: The server time zone value '���� (�W����)' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' c onfiguration property) to use a more specific time zone value if you want to utilize time zone support. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.22.jar:8.0.22] at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.22.jar:8.0.22] at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.22.jar:8.0.22] at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.22.jar:8.0.22] at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) ~[mysql-connector-java-8.0.22.jar:8.0.22] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76) ~[mysql-connector-java-8.0.22.jar:8.0.22] at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836) ~[mysql-connector-java-8.0.22.jar:8.0.22] at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456) ~[mysql-connector-java-8.0.22.jar:8.0.22] at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) ~[mysql-connector-java-8.0.22.jar:8.0.22] at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-java-8.0.22.jar:8.0.22] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-3.4.5.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-3.4.5.jar:na] at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) ~[hibernate-core-5.4.23.Final.jar:5.4.23.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5.4.23.Final.jar:5.4.23. Final] Error creating bean with name 'productRepository' Error creating bean with name 'jpaMappingContext' Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is javax.persistence.Persisten ceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory ~省略、一部抜粋~ mysql自体のタイムゾーン設定をしていないのとSpringでのmysql接続確認がまだ出来ていないのでやってみるつもりです。エラーメッセージの中にhikai.poolがあるのでもしかしたらhikaripoolが原因になってるかも知れません。 それとSpringのファイルエクスプローラーをよく見たらご指摘頂いたProductRepository.javaの[J]アイコンの右上に●の中に!が入った表示を見つけました。 それも合わせて調べていこうと思います!ありがとうございます!
guest

0

自己解決

lombok.jar1.8.0を使用中のSTS4に適用し、問題を解決しました
↓ここのLombok.jar
https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.0

イメージ説明
くぅ~疲れました。累計20時間のスタックでした。
失った時間も大きかったし、得る物も大きかった。ようやく完成しました。
協力して頂いた皆様、本当にありがとうございました。

少し眠ります

投稿2020/12/06 09:36

ayumu1220

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問