/* * 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.envers.test.integration.onetomany.embeddedid; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Embeddable; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.MapsId; import org.hibernate.envers.Audited; /** * @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com) */ @Entity @Audited public class PersonTuple implements Serializable { @Embeddable public static class PersonTupleId implements Serializable { @Column(nullable = false) private long personAId; @Column(nullable = false) private long personBId; @Column(nullable = false) private String constantId; @Override public boolean equals(Object o) { if ( this == o ) { return true; } if ( !(o instanceof PersonTupleId) ) { return false; } PersonTupleId that = (PersonTupleId) o; if ( personAId != that.personAId ) { return false; } if ( personBId != that.personBId ) { return false; } if ( constantId != null ? !constantId.equals( that.constantId ) : that.constantId != null ) { return false; } return true; } @Override public int hashCode() { int result = (int) (personAId ^ (personAId >>> 32)); result = 31 * result + (int) (personBId ^ (personBId >>> 32)); result = 31 * result + (constantId != null ? constantId.hashCode() : 0); return result; } @Override public String toString() { return "PersonTupleId(personAId = " + personAId + ", personBId = " + personBId + ", constantId = " + constantId + ")"; } public long getPersonAId() { return personAId; } public void setPersonAId(long personAId) { this.personAId = personAId; } public long getPersonBId() { return personBId; } public void setPersonBId(long personBId) { this.personBId = personBId; } public String getConstantId() { return constantId; } public void setConstantId(String constantId) { this.constantId = constantId; } } @EmbeddedId private PersonTupleId personTupleId = new PersonTupleId(); @MapsId("personAId") @ManyToOne(optional = false) @JoinColumn(insertable = false, updatable = false, nullable = false) private Person personA; @MapsId("personBId") @ManyToOne(optional = false) @JoinColumn(insertable = false, updatable = false, nullable = false) private Person personB; @MapsId("constantId") @ManyToOne(optional = false) @JoinColumn(insertable = false, updatable = false, nullable = false) private Constant constant; @Column(nullable = false) private boolean helloWorld = false; public PersonTuple() { } public PersonTuple(boolean helloWorld, Person personA, Person personB, Constant constant) { this.helloWorld = helloWorld; this.personA = personA; this.personB = personB; this.constant = constant; this.personTupleId.personAId = personA.getId(); this.personTupleId.personBId = personB.getId(); this.personTupleId.constantId = constant.getId(); personA.getPersonATuples().add( this ); personB.getPersonBTuples().add( this ); } @Override public boolean equals(Object o) { if ( this == o ) { return true; } if ( !(o instanceof PersonTuple) ) { return false; } PersonTuple that = (PersonTuple) o; return personTupleId.equals( that.personTupleId ); } @Override public int hashCode() { return personTupleId.hashCode(); } @Override public String toString() { return "PersonTuple(id = " + personTupleId + ", helloWorld = " + helloWorld + ")"; } public PersonTupleId getPersonTupleId() { return personTupleId; } public void setPersonTupleId(PersonTupleId personTupleId) { this.personTupleId = personTupleId; } public Person getPersonA() { return personA; } public void setPersonA(Person personA) { this.personA = personA; } public Person getPersonB() { return personB; } public void setPersonB(Person personB) { this.personB = personB; } public Constant getConstant() { return constant; } public void setConstant(Constant constant) { this.constant = constant; } public boolean isHelloWorld() { return helloWorld; } public void setHelloWorld(boolean helloWorld) { this.helloWorld = helloWorld; } }