我怎么能做这个hibernate映射?

时间:2012-02-08 14:45:07

标签: hibernate hibernate-mapping

熟悉这个问题......

我有一组与特定表相关的表。现在,为了完成所有这些和“table_one”之间的关系,我只创建了一个由主键组成的表:

id_table_one,id_table_many,id_table_many_type。

第一个表示table_one的id,第二个表示table_many(其中任何一个)的id,第三个键是表示表类型的字符串。

更具体的一个例子:

1,1,“表1” - >表示table_many“表1”(第1行)与table_one的第1行之间的关系

3,5,“表1” - >表示table_many“表1”(第5行)与table_one的第3行之间的关系

3,5,“表2” - >表示table_many“表2”(第5行)与table_one的第3行之间的关系

这在SQL中很容易做到,但问题是,如何在每个table_many中执行hibernate映射?

我将table_one声明如下:

<class name="tableOne" table="table_one">
    <composite-id>
        <key-property name="idTableOne"  type="java.lang.Integer">
            <column name="id_table_one" not-null="true"/>
        </key-property>
        <key-property name="idTableMany"  type="java.lang.Integer">
            <column name="id_table_many" not-null="true"/>
        </key-property>
        <key-property name="idTableManyType" type="string">
            <column name="id_table_many_type" length="100" not-null="true"/>
        </key-property>
    </composite-id>
</class> 

如何进入许多表?

<class name="tableMany1" table="table_many_1">
    <id name="idTableMany1" type="java.lang.Integer">
        <column name="id_table_many_1" />
        <generator class="identity" />
    </id>
    <set cascade="all" name="tableOneRows" sort="unsorted"
        table="table_one"  lazy="false">
        <...>
    </set>
</class>

我不知道如何填写&lt; ...&gt;部分......有什么建议吗?

我追求的最终目的是管理每个桌子上的tableOne(读/写)很多......

总而言之!

1 个答案:

答案 0 :(得分:0)

这仅供阅读

  <class name="One" table="table_one">
    <id name="Id" column="id">
    </id>
  </class>

  <class name="Many1" table="table_many_1">
    <id name="id">
      <column name="id_table_many_1" />
      <generator class="identity" />
    </id>
    <set cascade="all" name="Ones" table="linking_table" lazy="false" where="id_table_many_type = 'table 1'">
      <key column ="id_table_many" />
      <many-to-many column="d_table_one" class="One" />
    </set>
  </class>

writepart取决于:table_one到table_many1 a 1:n或n:m关联?