0

次の質問の答えが B なのはなぜですか?

私の見解では、答えはCであるべきです。

開発者は、次のエンティティ クラス オフィスを定義しました。

@Entity
Public class Office {

  @Id
  Private int Id;
  Private String name;
  @OneToMany
  Private List<Rooms> rooms;
}

次の属性のうち、「部屋」フィールドに対応して生成された静的メタモデル クラスに含まれるのはどれですか?

  • A. public static volatile CollectionAttribute ルーム。
  • B. Public static volatile ListAttribute <Room> 部屋。実際の答え
  • C. Public static volatile ListAttribute <Office, Room> 部屋。私の選択 - 間違い
  • D. Public static volatile SingleAttribute ルーム。
4

1 に答える 1

0

この質問に対する正しい答えはありません。次のマッピングが無効であるという理由:

@OneToMany プライベート リスト ルーム。

コレクションが必要なため無効です

  1. パラメータ化された型または
  2. targetEntity 属性が必要です。

これは、たとえば@OneToManyの API に記載されています。マッピングが代わりにあると仮定すると

@OneToMany
Private List<Room> rooms;

また

@OneToMany(targetEntity=somepackage.Room.class)
Private List<Room> rooms;

正解はCです(Public代わりpublicにタイプミスであると仮定します)。JPA 2.0仕様で次のように定義されているため、それは正解です。

• z の要素型が Z であるクラス X によって宣言されたすべての永続コレクション値属性 z について、メタモデル クラスには次のような宣言が含まれている必要があります。

...
• z のコレクション型が java.util.List の場合、public static volatile ListAttribute<X, Z> z;

そして、これらのルールに従うと、次のようになります。

public static volatile ListAttribute <Office, Room> rooms;
于 2012-07-30T07:09:54.170 に答える