2014-12-13 89 views
1

我想使用DelegatingReverseEngineeringStrategy生成pojos和hbm文件。我能夠自定義諸如實現接口,toString方法,對所有表對象的渴望獲取等。使用DelegatingReverseEngineeringStrategy休眠逆向工程

不過,我需要定製兩個特點:

考慮兩個表中父母與子女,其中有一個父母與子女之間的多對多關係。

我想:

  1. 組反=「假」在父HBM子集合

  2. 一套級聯=「全」在父HBM子集,這樣如果我更新家長收集它應該將效果級聯到兒童收集。

    <hibernate-mapping> 
    <class name="com.xyz.Parent" table="PARENT" schema="FAMILY"> 
        <meta attribute="implements" inherit="false">SomeInterface</meta> 
        <meta attribute="extra-import" inherit="false">com.xyz.SomeInterface</meta> 
        <property name="parentColumn" type="date"> 
        <meta attribute="use-in-tostring" inherit="false">true</meta> 
        <column name="PARENT_COLUMN" length="7" /> 
        </property> 
    <set name="child" table="Child" **inverse="false"** lazy="false" fetch="select" **cascade="all"**> 
    <key> 
        .... 
        </key> 
    <one-to-many class="com.xyz.Child" /> 
    </set> 
    </class> 
    </hibernate-mapping> 
    
  3. 排除Parent作爲Child's hbm中的外鍵 - 避免在代碼中反向查找。

    <hibernate-mapping> 
    <class name="com.xyz.Child" table="CHILD" schema="FAMILY"> 
        <meta attribute="implements" inherit="false">SomeInterface</meta> 
        <meta attribute="extra-import" inherit="false">com.xyz.SomeInterface</meta> 
        <property name="childColumn" type="date"> 
        <meta attribute="use-in-tostring" inherit="false">true</meta> 
        <column name="CHILD_COLUMN" length="7" /> 
        </property> 
    </composite-id> 
    **-- I do not want this in CHILD 
    <many-to-one name="parent" class="com.xyz.Parent" update="false" insert="false" fetch="select"> 
    <meta attribute="use-in-tostring" inherit="false">true</meta> 
    .... 
    </many-to-one>** 
    </class> 
    </hibernate-mapping> 
    

有沒有辦法找出在DelegatingReverseEngineeringStrategy協會信息?某些類可以爲每個表提供一對多,一對一的信息。

回答

1

看來,它應該通過重寫DelegatingReverseEngineeringStrategy.foreignKeyToAssociationInfo(ForeignKey的)是可能的但功能似乎並沒有在所有被稱爲實體創建構建:(

可以做一個正則表達式替換後的期間打造的是通過行家完成。Somethign像 查找

@ManyToOne\((.*)\)[\r\n\s][email protected]\((.*)\)[\r\n\s]+public Entity getEntity\(\) 

@ManyToOne($1, cascade=javax.persistence.CascadeType.ALL)\r\n\[email protected]($2, updatable=false, insertable=false)\r\n\tpublic Entity getEntity() 
更換