命令多对多关联hibernate映射

时间:2013-02-17 11:42:58

标签: hibernate orm visual-paradigm

我正在使用“ORM Persistable”类型“A”和“B”在Visual Paradigm中创建一个类图,其中A包含B的有序列表。我正在尝试配置多对多关联类图,其中关联仅可从A-> B导航,并且列表中B实例的顺序由它们在运行时添加到列表的顺序给出。当Visual Paradigm创建hibernate映射文件时,这应该导致ERD中的关联表“a2b”具有字段“a_id”,“b_id”,“order_idx”,以及用于定义列表属性的类型“A”的hibernate映射“bs”,其中list-index是关联表的“order_idx”,如:

<class name="A" table="a"> 
  <id name="id" column="id" /> 
  <list name="bs" table="a2b"> 
  <key column="a_id" /> 
  <list-index column="order_idx" base="1" /> 
    <many-to-many class="B" column="b_id" /> 
  </list> 
</class> 

但我无法让它发挥作用。 Visual Paradigm在关联表中为类型A和B创建索引列,并为B类型中的A实例创建列表(尽管关联在此方向上不可导航)。如果我尝试使用“order”属性创建A-&gt; B的关联类型,这也无法解决(这很清楚,但我尝试过任何导致...)。另外,当我定义ORM-&gt; Collection Type-&gt; List时,我收到以下错误消息: null(A-> B)有序关系不指定有序列。

如何在类图中的Visual Paradigm中定义这样的关联?

1 个答案:

答案 0 :(得分:0)

我收到了Visual Paradigm解决此问题的反馈: 要定义在Java类型“​​A”和“B”之间的有序集合,导致hibernate映射中的列表集合,必须执行以下步骤:

  • 在类图中定义ORM Persistable类型 enter image description here

  • 为这些类型创建ERD图,例如通过Visual Paradigm移动“右击鼠标拖动”。 enter image description here

  • 将“订单栏”添加到表“A”到表“A_B”的关联中。右键单击关联,然后选择“打开规范”。 enter image description here
  • 然后单击“已订购”复选框并选择包含订单索引的列。在这个例子中,还没有这样的列,所以我选择“Create Column ...” enter image description here
  • 在此示例中,必须配置列名“Index”和数据类型int(10)(因为之前的列不存在) enter image description here
  • 这导致ERD图如下所示: enter image description here
  • 然后还配置从表“B”到要排序的表“A_B”的关联,并使用完全相同的索引列。 enter image description here
  • 现在已经完全配置了有序的多对多单向关联,Visual Paradigm能够创建上面问题中引用的hibernate映射。 Feine Sache: - )