package org.hibernate.envers.test.integration.onetomany.embeddedid;
import org.hibernate.envers.Audited;
import javax.persistence.*;
import java.io.Serializable;
/**
* @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)
private Person personA;
@MapsId("personBId")
@ManyToOne(optional = false)
@JoinColumn(insertable = false, updatable = false)
private Person personB;
@MapsId("constantId")
@ManyToOne(optional = false)
@JoinColumn(insertable = false, updatable = 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;
}
}