ПРОБНЫЙ ЭКЗАМЕН SCBCD

Почему ответ на следующий вопрос B?

На мой взгляд, ответ должен быть C.

Разработчик определил следующий офис класса сущностей:

@Entity
Public class Office {

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

Какие из следующих атрибутов будут в соответствующем сгенерированном классе статической метамодели для поля «комнаты»?

  • A. Публичные статические изменчивые комнаты CollectionAttribute;
  • B. Комнаты Public static volatile ListAttribute ‹Room›; Фактический ответ
  • C. Комнаты Public static volatile ListAttribute ‹Office, Room›; Мой выбор — неправильный
  • D. Общедоступные статические изменчивые комнаты SingleAttribute;

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


Ответы (1)


На этот вопрос нет правильного ответа. Причина в том, что следующее сопоставление недействительно:

Частные комнаты @OneToMany;

Это неверно, потому что сбор должен

  1. быть параметризованного типа или
  2. ему нужен атрибут targetEntity.

Это задокументировано, например, в API @ Один ко многим. Если мы предположим, что отображения вместо этого

@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