/* * Hibernate, Relational Persistence for Idiomatic Java * * Copyright (c) 2009 by Red Hat Inc and/or its affiliates or by * third-party contributors as indicated by either @author tags or express * copyright attribution statements applied by the authors. All * third-party contributions are distributed under license by Red Hat Inc. * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU * Lesser General Public License, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution; if not, write to: * Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301 USA */ package org.hibernate.ejb.test.metadata; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.IdClass; /** * @author Emmanuel Bernard */ @IdClass(Person.PersonPK.class) @Entity(name="Homo") //Person in latin ;) public class Person { private String firstName; private String lastName; private Short age; @Id public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } @Id public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public Short getAge() { return age; } public void setAge(Short age) { this.age = age; } public static class PersonPK implements Serializable { private String firstName; private String lastName; @Id public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } @Id public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public boolean equals(Object o) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } PersonPK personPK = ( PersonPK ) o; if ( firstName != null ? !firstName.equals( personPK.firstName ) : personPK.firstName != null ) { return false; } if ( lastName != null ? !lastName.equals( personPK.lastName ) : personPK.lastName != null ) { return false; } return true; } @Override public int hashCode() { int result = firstName != null ? firstName.hashCode() : 0; result = 31 * result + ( lastName != null ? lastName.hashCode() : 0 ); return result; } } }