Problem with HashCodeBuilder and EqualsBuilder
Hello
I am using JDK 6.0, Hibernate 3.2, MySQL 5.0.37, MySQL JConnector 5.0.5 and Apache commons lang 2.3
I have a class "Event" implemented hashCode and equals method:
Code:
package events;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
public class Event
{
...................
@Override
public int hashCode()
{
return HashCodeBuilder.reflectionHashCode( this );
}
@Override
public boolean equals( Object obj )
{
return EqualsBuilder.reflectionEquals(this, obj);
}
}
and I test in the main method :
package test;
import java.util.Date;
import java.util.Iterator;
import org.hibernate.Session;
import events.*;
import util.HibernateUtil;
public class Test
{
public static void main( String [] args )
{
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
// ********* Test for insert
Event event1 = new Event();
event1.setDate(new Date());
event1.setTitle("Title for event 1");
// session.persist(event1);
Person person1 = new Person();
person1.setAge(25);
person1.setFirstName("Duc");
person1.setLastName("Nguyen");
// person1.setEvent(event1);
Person person2 = new Person();
person2.setAge(25);
person2.setFirstName("Long");
person2.setLastName("Pham");
// person2.setEvent(event1);
event1.getParticipants().add(person1);
event1.getParticipants().add(person2);
session.save(event1);
// session.save(person1);
// session.save(person2);
session.getTransaction().commit();
// session.getSessionFactory().close();
//********* Test for update
session = HibernateUtil.getSessionFactory().getCurrentSession();
session.getTransaction().begin();
// testUpdate(session, 1L);
Event anEvent = (Event) session.load(Event.class, new Long(1));
System.out.println("\n===> anEvent hashCode: " + anEvent.hashCode() + "\tevent1 hashCode: " + event1.hashCode());
if (anEvent.equals( event1 ))
System.out.println("\n====> OK ");
else
System.out.println("\n====> fail");
}
}
The event id was saved into database with id "1"
This is the result in console:
===> anEvent hashCode: -1444564182 event1 hashCode: -1444574986
====> fail
What problem happend to Apache commons lang library ? or I implement equals, hashCode incorrectly ?
Please help me. Thank you