复合键包括hibernate set中的外键

时间:2016-05-03 09:00:44

标签: java hibernate

我不明白如何在集合

中定义复合键,包括一个外键

这是我的对象:

MyObject                    MySubset
--------                    -------------
String myId                 String subAttribute
String myAttribute          String subValue
Set<MySubset> mySubset

我希望有两个表 MyObjectTable MySubsetTable myId MyObjectTable 的主键。我想将FK myId subAttribute 定义为 MySubsetTable 的复合键。

xml中的hibernate映射会是什么样的?

<hibernate-mapping>
  <class table="myObjectTable" name="MyObject">
    <id name="myId">
      <column name="myId"/>
    </id>
    <property name="myAttribute"> <column name=....> </property>
    <set cascade="all, delete-orphan table="MySubsetTable" name"mySubset" ...>

      <!-- How should I define my key? -->


      <composite-element class="MySubset">
        <property name="subAttribute"> <column name="subAttribute"/> </property>
        <property name="subValue"> <column name="subValue"/> </property>
      </composite-element>
    </set>
  </class>
</hibernate-mapping>

1 个答案:

答案 0 :(得分:0)

我通过不使用集合而是使用地图解决了我的问题:

  <form methord="post" name="wordsubmit" id="submit">
    <div class="inner">
      <input class="word" name="word" placeholder="Your Word" type="text"/>
      <select class="country" name="country" size='1'>
        <option value="">Your country</option>
      </select>
      <select class="age" name="age" size='1'>
        <option value="">Age</option>
        <option value="18-24">18-24</option>
        <option value="25-34">25-34</option>
        <option value="35+">35+</option>
      </select>
      <select class="sex" name="sex" size='1'>
        <option value="">Sex</option>
        <option value="Male">Male</option>
        <option vlaue="Female">Female</option>
      </select>
    </div>
    <input class="submit" name="submit" type="submit" value="Submit"/>
  </form>

也许这有助于其他人...