1. ホーム
  2. ジャワ

Spring Boot JpaのJpaRepositoryのtypeパラメータでT,IDの型を決定する方法

2022-03-01 20:07:11

今日、Jpaの勉強をしていて、自分のコードを見ました。

public interface UserRepository extends JpaRepository<User, Long>{}

ふと、IDのオブジェクト型がLongであることに気づき、Longというオブジェクト型がどのようにして生まれたのか考えてみました。

Spring data Jpaのリファレンスドキュメントを見たところ、以下のような記述がありました。

赤枠のフィールドの説明: エンティティタイプとエンティティクラスのidタイプをタイプパラメータとして取る。

赤枠のフィールドの説明: インターフェースは、リポジトリのIdタイプにエンティティタイプおよびエンティティクラスとしてパラメータ化されたタイプを継承する必要があります。

この例は、public interface UserRepository extends JpaRepository<T, ID>だからです。

上記の記述によると Tはエンティティクラス(Entity)Userとして型付けする必要があり、IDはエンティティクラスUserのId型(Id型はLongと定義しました)である必要があります。

したがって、UserRepository インターフェースは次のように記述する必要があります。 public interface UserRepository extends JpaRepository<User, Long>