ホームページ >Java >&#&チュートリアル >EmbeddedId または IdClass を使用して JPA と Hibernate で複合キーをマッピングする方法は?

EmbeddedId または IdClass を使用して JPA と Hibernate で複合キーをマッピングする方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-03 05:22:16583ブラウズ

How to Map Composite Keys in JPA and Hibernate using EmbeddedId or IdClass?

JPA および Hibernate を使用した複合キーのマッピング

Java Persistence API (JPA) および Hibernate での複合キーのマッピングは、EmbeddedId またはIdClass アノテーション。

With IdClass

    複合キー フィールドをカプセル化する別の主キー クラス (TimePK など) を定義します。
  1. エンティティにアノテーションを付けます。 @IdClass アノテーション。主キー クラスを指定します。
public class TimePK implements Serializable {
    private Integer levelStation;
    private Integer confPathID;
    // getters, setters
}

@Entity
@IdClass(TimePK.class)
class Time {
    @Id
    private Integer levelStation;
    @Id
    private Integer confPathID;
    // ...
}

With EmbeddedId

    同様に、別の主キー クラスを定義します (例: TimePK).
  1. 主キー クラスにアノテーションを付けます。 @Embeddable アノテーション。
  2. エンティティに @EmbeddedId アノテーションを付け、主キー クラスを指定します。
@Embeddable
public class TimePK implements Serializable {
    private Integer levelStation;
    private Integer confPathID;
    // getters, setters
}

@Entity
class Time {
    @EmbeddedId
    private TimePK timePK;
    // ...
}

相違点

  • 意味: EmbeddedId は複合キーに特定の意味があることを示唆しますが、IdClass はフィールドの組み合わせが単に一意の識別子である場合に適しています。
  • クエリ構文: EmbeddedId では、主キー フィールドは次のとおりです。埋め込まれた主キー クラスを通じてアクセスされますが、IdClass を使用してフィールドにアクセスできます。

参考資料

    JPA 1.0 仕様: セクション 2.1.4、9.1.14、および 9.1.15

以上がEmbeddedId または IdClass を使用して JPA と Hibernate で複合キーをマッピングする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。