SCBCD模拟考试

时间:2012-07-30 02:20:25

标签: java jpa-2.0

为什么回答以下问题B?

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

开发人员已定义以下实体类办公室:

@Entity
Public class Office {

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

“房间”字段的相应生成的静态元模型类中将包含以下哪些属性?

  • 甲。公共静态volatile CollectionAttribute rooms;
  • B中。公共静态volatile ListAttribute&lt; Room&gt;房间; 实际答案
  • ℃。公共静态volatile ListAttribute&lt; Office,Room&gt;房间; 我的选择 - 错误
  • d。公共静态volatile SingleAttribute房间;

1 个答案:

答案 0 :(得分:0)

这个问题没有正确的答案。原因是以下映射无效:

@OneToMany 私人房间;

它无效,因为收藏必须

  1. 是参数化类型或
  2. 它需要targetEntity属性。
  3. 例如,在@OneToMany的API中记录了这一点。如果我们假设映射是

    @OneToMany
    Private List<Room> rooms;
    

    @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;