/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.test.cache.infinispan.stress.entities; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Version; import java.util.Date; @Entity public class Person { @Id @GeneratedValue private int id; private String firstName; @ManyToOne private Family family; private Date birthDate; @ManyToOne private Address address; private boolean checked; @Version private int version; public Person(String firstName, Family family) { this.firstName = firstName; this.family = family; this.birthDate = null; this.address = null; this.checked = false; this.id = 0; this.version = 0; this.family.addMember(this); } protected Person() { this.firstName = null; this.family = null; this.birthDate = null; this.address = null; this.checked = false; this.id = 0; this.version = 0; } public String getFirstName() { return firstName; } public Family getFamily() { return family; } public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public Address getAddress() { return address; } public void setAddress(Address address) { // To skip Hibernate BUG with access.PROPERTY : the rest should be done in DAO // this.address = address; // Hibernate BUG : if we update the relation on 2 sides if (this.address != address) { if (this.address != null) this.address.remInhabitant(this); this.address = address; if (this.address != null) this.address.addInhabitant(this); } } public boolean isChecked() { return checked; } public void setChecked(boolean checked) { this.checked = checked; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getVersion() { return version; } protected void setFirstName(String firstName) { this.firstName = firstName; } protected void setFamily(Family family) { this.family = family; } protected void setVersion(Integer version) { this.version = version; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; if (checked != person.checked) return false; if (id != person.id) return false; if (version != person.version) return false; if (address != null ? !address.equals(person.address) : person.address != null) return false; if (birthDate != null ? !birthDate.equals(person.birthDate) : person.birthDate != null) return false; if (family != null ? !family.equals(person.family) : person.family != null) return false; if (firstName != null ? !firstName.equals(person.firstName) : person.firstName != null) return false; return true; } @Override public int hashCode() { int result = firstName != null ? firstName.hashCode() : 0; result = 31 * result + (family != null ? family.hashCode() : 0); result = 31 * result + (birthDate != null ? birthDate.hashCode() : 0); result = 31 * result + (address != null ? address.hashCode() : 0); result = 31 * result + (checked ? 1 : 0); result = 31 * result + id; result = 31 * result + version; return result; } @Override public String toString() { return "Person{" + "address=" + address + ", firstName='" + firstName + '\'' + ", family=" + family + ", birthDate=" + birthDate + ", checked=" + checked + ", id=" + id + ", version=" + version + '}'; } }