0

为什么下面的问题 B 的答案是?

在我看来,答案应该是 C。

开发者定义了以下实体类office:

@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> rooms;实际答案
  • C. public static volatile ListAttribute <Office, Room> rooms;我的选择 - 错误
  • 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;

Public那么正确答案是 C(假设public是错字)。这是正确的答案,因为它在 JPA 2.0 规范中定义如下:

• 对于类 X 声明的每个持久集合值属性 z,其中 z 的元素类型是 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 回答