多对多映射

使用多对多映射来定义具有多对多多重性的多值关联。多对多映射有两端:拥有端非拥有端。您必须在拥有端指定连接表。对于双向映射,每一端都可以是拥有端。

  1. “JPA 结构”视图中,选择要映射的字段。

  2. 右键单击该字段,然后选择映射为 > 多对多“JPA 详细信息”视图(用于属性)显示了所选字段的属性。

  3. 使用此表来填写 JPA 详细信息视图的常规信息字段。

    属性 描述 缺省值
    映射实体超链接 将此映射定义为多对多映射

    此字段与 @ManyToMany 注释相对应。

    多对多
    目标实体 此属性所映射的实体。

    由于可以根据所引用对象的类型进行推断,因此不需要明确指定目标实体。

    访存 定义如何从数据库装入数据。有关详细信息,请参阅访存类型
    • 提前

    • 延迟

    延迟
    映射者 拥有关系的数据库字段。
    排序依据 指定从查询返回的对象的缺省顺序。有关详细信息,请参阅排序依据
    • 不排序

    • 主键

    • 定制

    不排序

  4. 使用此表来填写 JPA 详细视图视图中连接表信息区域中的字段。

    属性 描述 缺省值
    名称 包含外键列的连接表的名称。 您必须在拥有端指定连接表。

    缺省情况下,假定名称是实体的相关主表名与下划线的并置。

    连接列 选择覆盖缺省值,然后添加、编辑或除去连接列。 缺省情况下,假定名称是实体的相关主表名与下划线的并置。
    逆向连接列 选择覆盖缺省值,然后添加、编辑或除去连接列。 缺省情况下,假定映射有单个连接。

  5. 要添加新的连接列或逆向连接列,请单击添加

    要编辑现有连接列或逆向连接列,请选择字段,然后单击编辑

Eclipse 将对该字段添加以下注释:

@JoinTable(joinColumns=@JoinColumn(name="<JOIN_COLUMN>"),
    name = "<JOIN_TABLE_NAME>")
@ManyToMany(cascade=CascadeType.<CASCADE_TYPE>, fetch=FetchType.<FETCH_TYPE>,
    targetEntity=<TARGET_ENTITY>, mappedBy = "<MAPPED_BY>")
@OrderBy("<ORDER_BY>")


 

相关任务

映射实体

 

相关参考

“JPA 结构”视图
“JPA 详细信息”视图(用于属性)

 

相关概念

理解 OR 映射
理解 EJB 3.0 Java 持久性 API