Eclipse+JPAでDBからEntityクラスを自動生成

使用環境

初期設定

Spring Bootプロジェクトを作成

f:id:n-yata:20210429153424p:plain f:id:n-yata:20210429153508p:plain f:id:n-yata:20210429153533p:plain

プロジェクトの設定を変更

f:id:n-yata:20210429154819p:plain f:id:n-yata:20210429153746p:plain
「より詳しい構成」を選択
f:id:n-yata:20210429153917p:plain
「接続の追加」を選択
f:id:n-yata:20210429153954p:plain
「接続のテスト」を押してping正常を確認、「完了」
f:id:n-yata:20210429154042p:plain
f:id:n-yata:20210429154330p:plain

設定変更する場合

プロジェクトの設定から「JPA」タブで編集できる
f:id:n-yata:20210429154511p:plain

DBの接続先の設定変更など

ウィンドウの設定からパースぺクティブを追加しておくと便利。
f:id:n-yata:20210429154936p:plain

使ってみる

テーブルからエンティティを生成 f:id:n-yata:20210429155206p:plain f:id:n-yata:20210429155251p:plain
JOINするテーブルとかあればここで設定するっぽい
f:id:n-yata:20210429155308p:plain f:id:n-yata:20210429155415p:plain
「完了」押すと生成される
f:id:n-yata:20210429155430p:plain
こんな感じ
f:id:n-yata:20210429155529p:plain

できなかったこと

persistence.xmlに生成時の設定を書ける?ようだけど。
とりあえず単純に生成するだけだと下記手直し必要だった。

テーブルのスキーマ指定

publicスキーマなら問題ないけど、他のスキーマのテーブルを参照する場合、@Table(name="mutter", schema = "spring")とかスキーマ名を手直し必要

プリミティブ型→ラッパークラス

JPAリポジトリからfindした結果をエンティティに格納する際、double型だとnull格納できずエラーに。自動生成されたエンティティにdoubleがあった場合、null格納の可能性ある際はDoubleクラスに手直しする必要あった。

参考文献

Hibernate Toolsを使ってJPAのEntityクラスを生成する - Qiita