We are using hibernate in a new project where we use the hibernate.reveng.xml
to create our *.hbm.xml
files and POJOs after that. We want to have equals methods in each of our POJOs.
I found that you can use <meta attribute="use-in-equals">true</meta>
in your hbm files to mark which properties to use in the equals. But this would mean editing alot of files, and then re-editing the files again in the future if/when we modify tables or columns in our DB.
So I was wondering if there is a way to place which properties to use in the equals method for each pojo(table) in the hibernate.reveng.xml
file?
This is an undocumented feature (and the online DTD is out of date) but you can add <meta>
in the <table>
and <colum>
elements. In other words, you should be able to do this:
<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>
The DTD in hibernate-tools.jar should be up-to-date (and looks like this one) and declare:
<!ELEMENT column (meta*) >
There is a discussion about this in the Seam in Action forums.
eclipse has equal and hash code generator. We use that for generation of those methods.