2012-02-08 54 views
0

爲了解問題...我該如何做這個hibernate映射?

我有一組與特定表相關的表。現在爲了完成它們和「table_one」之間的關係,我只做了一張由以下主鍵組成的表格:

id_table_one,id_table_many,id_table_many_type。

第一個表示table_one的id,第二個表示table_many的id(它們中的任何一個),第三個鍵是表示表的類型的字符串。

一個例子,具體而言:

1,1, 「表1」 - >指示與table_one的行1的table_many 「表1」(行1)之間的關係

在圖3,5中,「表格1」 - >表示table_many「table 1」(第5行)與table_one的第3行之間的關係。「>表格2」 - >表示table_many「table 1」(第5行)與table_one的第3行之間的關係。 table_many「table 2」(第5行)與第3行的table_one

這很簡單在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> 

我不知道如何填寫< ...> section ...有什麼建議嗎?

我追求的終局是從每個tableMany管理tableOne(讀/寫)...

THX一切!

回答

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一個1:N或N:M關聯?