2012-07-30 77 views
0

爲什麼要回答以下問題B?SCBCD MOCK考試

我認爲答案應該是C.

開發人員定義了以下實體類辦公:

@Entity 
Public class Office { 

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

以下哪個屬性將是爲相應生成的靜態元模型類'房間'字段?

  • A.公共靜態volatile volatile CollectionAttribute rooms;
  • B.公共靜態易變性ListAttribute <房間>房間; 實際答案
  • C.公共靜態volatile volatile ListAttribute < Office,Room > rooms; 我的選擇 - 錯誤
  • D.公共靜態volatile SingleAttribute房間;
+0

我已更新我的問題。 – user739115 2012-07-30 05:11:15

回答

0

這個問題沒有正確的答案。原因是以下映射無效:

@OneToMany Private List rooms;

它是無效的,因爲收集得

  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規範定義如下:

•對於由類 X,其中Z的元素類型爲Z,元類必須聲明的每一個持久化集合值屬性ž包含 聲明如下:

...
•如果z的集合類型 java.util.List的,然後public static volatile ListAttribute<X, Z> z;

,然後執行以下規則留給我們:

public static volatile ListAttribute <Office, Room> rooms;