2010-03-26 118 views
4

我們在一個新項目中使用休眠,我們使用hibernate.reveng.xml創建*.hbm.xml文件和POJO。我們希望在每個POJO中都有平等的方法。 我發現你可以在你的hbm文件中使用<meta attribute="use-in-equals">true</meta>來標記在equals中使用哪些屬性。但是這意味着要編輯大量文件,並且在我們修改我們數據庫中的表或列時將來再次重新編輯這些文件。休眠生成POJO等於

所以我想知道是否有一種方法可以在hibernate.reveng.xml文件中的每個pojo(表)的equals方法中使用哪些屬性?

回答

6

這是一個未公開的功能(和在線DTD已過時),但您可以在<table><colum>元素中添加<meta>。換句話說,你應該能夠做到這一點:

<table name="PROPERTY" catalog="DATA" schema="PUBLIC"> 
    <meta attribute="extends">BasicDataObject</meta> 
    <meta attribute="scope-class">public abstract</meta> 
    <column name="ID"> 
    <meta attribute="use-in-equals">true</meta> 
    <meta attribute="use-in-tostring">true</meta> 
    </column> 
</table> 

的DTD在休眠-的tools.jar應該跟上時代的(貌似this one),並宣佈:

<!ELEMENT column (meta*) > 

在Seam in Action論壇中有關於此的a discussion

+0

@Pascal謝謝你。那正是我所期待的。 – 2010-03-26 18:14:43

+0

@jschoen不客氣 – 2010-03-27 12:47:59

2

eclipse有相等的哈希碼生成器。我們用它來生成這些方法。

+0

@dr jerry當db模式發生變化時,您是否重新生成pojos,然後通過它們手動返回並讀取等值增加哈希碼? – 2010-03-26 15:23:55

+0

數據庫更改後沒有,我不重新生成。在某個時候,我們離開了這個世代,並且對我們的pojo's進行了手動更新。我們的配置調整得太多以從代碼生成中獲益。 – 2010-03-29 16:20:44