2010-03-26 220 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