備忘録:javax.persistenceのimportでエラーになる件(結論jakartaをimportしよう)[Spring Boot]

アプリ制作関連

タイトルの通り、新規プロジェクトでjavax.persistenceが使えない状況が発生した

↓の画像の通りjavax.persistenceのimportでエラーになる

なぜjavax.persistenceをimportしようと思ったかというと

postgresqlに接続するサンプルプロジェクトを

ググったらほぼ全てのサイトでjavax.persistenceをimportしていたから…

私は以下のサイトを参考にspring + postgresql + jpa

の簡単なCRUDプロジェクトの作成をしようとしていました

Spring Boot, JPA/Hibernate, PostgreSQL example: CRUD - BezKoder
How to connect to Postgresql database - Spring Boot, PostgreSQL CRUD example using Maven & Spring Data JPA, Hibernate

間違った解決法:javax.persistence-apiを依存関係に追加する

私がやってしまった間違った解決法を以下に記載します。

これやってしまったことにより表面上はエラーがない状態になるため

本来の解決方法に辿り着くまで

めちゃくちゃ時間掛かってしまいました。。3日ぐらい費やした…
(注意:以下をマネするとアプリがちゃんと動かなくなります)

なにをしたかというと無理やり

pom.xmlに以下の画像の通りjavax.persistence-apiを

依存関係に追加しました

これをすると以下の通りimportのエラー自体は解消します、当たり前だけど
(解消しちゃうからややこしくなります)

しかしSpring Boot Appで実行すると以下のエラーが発生します、必ず。

Caused by: java.lang.IllegalArgumentException: Not a managed type: class [XXX]

で、IllegalArgumentException: Not a managed type: classでググると

色々解決法が出てくるのですが、私の場合全て当てはまりませんでした…

本来の解決法:jakarta.persistenceをimportすればよかっただけ

javax.persistenceを無理やりimportしようとするのではなく

jakarta.persistenceをimportすれば

Entityアノテーションなどが使えます

なおかつSpring Boot Appの実行時にエラーになることもなくなりました。

調べてみるとある時点からjavaEE→jakartaEEに移行したみたい…

政治的な話っぽい気がしていますが正直私はよく分からなかったので

以下リンクを貼り付けておきます。リンクを見るとなんとなく分かるかと思います

JavaEEとJakartaEE、どう違うの? - Qiita
よく考えてみると、わかりやすい説明がほとんどないことに気づきました。戸惑っている人も多いのではないかと思ったので、あえて、誤解をおそれず、本当のところ(と思うこと)をやさしく書いてみました。(もし…
Javax to Jakarta Namespace Ecosystem Progress | The Eclipse Foundation
The Jakarta EE ecosystem has been hard at work transitioning various libraries, framework, servers and tools from the ja...
タイトルとURLをコピーしました