JPA および Hibernate を使用した複合キーのマッピング
提供された SQL スキーマでは、Time テーブルには levelStation と confPathID で構成される複合主キーがあります。フィールド。 JPA および Hibernate でこのタイプのキーをマッピングするには、複合主キーを表す特別なアノテーションが必要です。
IdClass アノテーションの使用
1 つのオプションは、次の Java クラスを定義することです。 @IdClass アノテーションを使用した複合キー。クラスには、主キー列に対応するフィールド、ゲッター、セッター、equals、および hashCode メソッドが必要です:
public class TimePK implements Serializable { private Integer levelStation; private Integer confPathID; // Getters, setters, equals, hashCode }
エンティティ クラスには @IdClass と複合キー オブジェクトの注釈が付けられます:
@Entity @IdClass(TimePK.class) class Time implements Serializable { @Id private Integer levelStation; @Id private Integer confPathID; // Other properties }
EmbeddedId の使用アノテーション
または、@EmbeddedId アノテーションを使用して複合キーを含むクラスを定義できます。
@Embeddable public class TimePK implements Serializable { private Integer levelStation; private Integer confPathID; // Getters, setters, equals, hashCode }
エンティティ クラスには @EmbeddedId と埋め込まれた複合キーでアノテーションが付けられます。キーオブジェクト:
@Entity class Time implements Serializable { @EmbeddedId private TimePK timePK; // Other properties }
IdClass の違いおよび EmbeddedId
@IdClass と @EmbeddedId の両方で、複合主キーのマッピングが可能です。ただし、いくつかの小さな違いがあります。
@IdClass と @EmbeddedId のどちらを選択するかは依存します。アプリケーションの特定のセマンティクスについて。
以上が`@IdClass` または `@EmbeddedId` を使用して JPA と Hibernate で複合キーをマッピングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。