ПРОБЕН ИЗПИТ SCBCD

Защо отговорът на следващия въпрос е B?

Според мен отговорът трябва да бъде C.

Разработчикът е дефинирал следния офис клас обект:

@Entity
Public class Office {

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

Кой от следните атрибути ще бъде в съответния генериран клас статичен метамодел за полето „стаи“?

  • A. Публични статични непостоянни CollectionAttribute стаи;
  • B. Публични статични променливи ListAttribute ‹Room› стаи; Истински отговор
  • C. Публичен статичен променлив ListAttribute ‹Office, Room› стаи; Моят избор - грешен
  • D. Публични статични непостоянни SingleAttribute стаи;

person user739115    schedule 30.07.2012    source източник


Отговори (1)


Няма правилен отговор на този въпрос. Причината е, че следното съпоставяне е невалидно:

@OneToMany частни списъчни стаи;

Той е невалиден, защото събирането трябва

  1. да бъде параметризиран тип или
  2. има нужда от атрибут targetEntity.

Това е документирано например в API на @ OneToMany. Ако приемем, че картографирането е вместо това

@OneToMany
Private List<Room> rooms;

or

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

Тогава правилният отговор е C (ако приемем, че Public вместо public е печатна грешка). Това е правилният отговор, защото е дефиниран в спецификацията на JPA 2.0, както следва:

• За всеки постоянен атрибут с стойност на колекция z, деклариран от клас X, където типът на елемента на z е Z, класът на метамодела трябва да съдържа декларация, както следва:

...
• ако типът колекция на z е java.util.List, тогава public static volatile ListAttribute<X, Z> z;

И следването на тези правила ни оставя с:

public static volatile ListAttribute <Office, Room> rooms;
person Mikko Maunu    schedule 30.07.2012