[hibernate-issues] [Hibernate-JIRA] Commented: (HBX-1116) Generated hashCode() is inconsistent with equals() when using natural-id tag

Magnus Jungsbluth (JIRA) noreply at atlassian.com
Fri Apr 3 04:51:39 EDT 2009


    [ http://opensource.atlassian.com/projects/hibernate/browse/HBX-1116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=32779#action_32779 ] 

Magnus Jungsbluth commented on HBX-1116:
----------------------------------------

The code-generation for equals treats the natural-id properties as if they had the "use-in-equals" meta-attribute while the code-generation of hashCode() explicitly requires the meta-attribute.

To reproduce:

hbm.xml:
------------
{code}
        <natural-id>
            <property name="identificationNo" type="java.lang.Long">
                <column name="SOME_COLUMN" precision="10" scale="0" />
            </property>
        </natural-id>
{code}

Generated equals:
-------------------------
{code}
	public boolean equals(Object other) {
         if ( (this == other ) ) return true;
		 if ( (other == null ) ) return false;
		 if ( !(other instanceof BaseContainerType) ) return false;
		 BaseContainerType castOther = ( BaseContainerType ) other; 
         
		 return ( (this.getIdentificationNo()==castOther.getIdentificationNo()) || ( this.getIdentificationNo()!=null && castOther.getIdentificationNo()!=null && this.getIdentificationNo().equals(castOther.getIdentificationNo()) ) );
	}
{code}

Generated hashCode:
-------------------------------
{code}
	public int hashCode() {
		int result = 17;
         
		//endless lines of whitespace (one for every property)
		//missing code for "identificationNo"

		return result;
	} 
{code}

> Generated hashCode() is inconsistent with equals() when using natural-id tag
> ----------------------------------------------------------------------------
>
>                 Key: HBX-1116
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HBX-1116
>             Project: Hibernate Tools
>          Issue Type: Patch
>    Affects Versions: 3.2.4.GA
>         Environment: hibernate tools revision 16240
>            Reporter: Magnus Jungsbluth
>            Priority: Minor
>         Attachments: hbm2java_hashCode_equals.patch
>
>
> when using a natural-id tag in a hbm.xml file, the pojo's generated equals method uses the natural-id properties while the hashcode implementation requires an additional meta-attribute
> the included patch uses the same check as in the equals generation in basicpojoclass.java
> additionally the template has been changed to only iterate over equalshashcode properties which reduces unnecessary blank lines in the hashcode implementation
> the template also contained wrongly indented lines

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the hibernate-issues mailing list