パッケージ jakarta.persistence

アノテーションインターフェース Embeddable


@DocumentedSE @TargetSE(TYPESE) @RetentionSE(RUNTIMESE) public @interface Embeddable
エンティティの ID を共有し、所有するエンティティの組み込み部分としてインスタンスが格納される型を宣言します。単一の埋め込み型は、複数のエンティティにわたって複数の永続フィールドまたはプロパティの型として使用されるため、埋め込み型の個別のインスタンスが、完全に無関係なエンティティ型の所有エンティティを持つ可能性があります。

アノテーション付き型は次のことを行う必要があります。

  • 非 abstract非 final 最上位クラス、静的内部クラス、Java レコード型であること。
  • レコード型でない限り、パラメーターのない public または protected コンストラクターがあります。
  • final メソッドや永続インスタンス変数はありません。

enum またはインターフェースを埋め込み可能な型として指定することはできません。

埋め込み可能クラスには独自のテーブルがありません。代わりに、インスタンスの状態は、所有エンティティによってマップされた 1 つまたは複数のテーブルに保存されます。

埋め込み可能クラスの永続フィールドとプロパティは、エンティティクラスのマップに使用されるものと同じマッピングアノテーションを使用してマップされ、それ自体が埋め込み可能型のインスタンスを保持する場合があります。埋め込み可能クラスは、その所有エンティティから別のエンティティへの関連付けを宣言することもできます。

ただし、埋め込み可能クラスには、Id または EmbeddedId のアノテーションが付けられたフィールドまたはプロパティを含めることはできません。

埋め込み可能クラスのフィールドまたはプロパティは、デフォルトでは永続的です。Transient アノテーションまたは Java transient キーワードは、永続的ではない埋め込み可能クラスのフィールドまたはプロパティを明示的に宣言するために使用する必要があります。

例 1:

例 2:

例 3:

導入:
1.0
関連事項: