/*
* 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.naming;
import javax.persistence.AssociationOverride;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Table;
import org.hibernate.envers.AuditOverride;
import org.hibernate.envers.AuditOverrides;
import org.hibernate.envers.test.entities.components.Component1;
/**
* Test entity, containing two embedded components, which each contain a list of
* {@link VersionsJoinTableRangeTestEntitySuperClass}-instances
*
* @author Erik-Berndt Scheper
*/
@Entity
@Table(name = "COMPONENT_TEST_ENTITY")
public class VersionsJoinTableRangeComponentTestEntity {
@Id
@GeneratedValue
@Column(name = "ID")
private Integer id;
/**
* An embedded component, containing a list of
* {@link VersionsJoinTableRangeTestEntity}-instances.
*/
@Embedded
@AssociationOverride(name = "range",
joinColumns = {
@JoinColumn(name = "VJTRCTE1_ID",
insertable = true,
updatable = false,
nullable = false)
})
@org.hibernate.envers.Audited
@AuditOverride(name = "range",
auditJoinTable = @org.hibernate.envers.AuditJoinTable(name = "JOIN_TABLE_COMPONENT_1_AUD",
inverseJoinColumns = @JoinColumn(name = "VJTRTE_ID")))
private VersionsJoinTableRangeComponent<VersionsJoinTableRangeTestEntity> component1 = new VersionsJoinTableRangeComponent<VersionsJoinTableRangeTestEntity>();
/**
* An embedded component, containing a list of
* {@link VersionsJoinTableRangeTestAlternateEntity}-instances.
*/
@Embedded
@AssociationOverride(name = "range",
joinColumns = {
@JoinColumn(name = "VJTRCTE2_ID",
insertable = true,
updatable = false,
nullable = false)
})
@org.hibernate.envers.Audited
@AuditOverrides(value = {
@AuditOverride(name = "range",
auditJoinTable = @org.hibernate.envers.AuditJoinTable(name = "JOIN_TABLE_COMPONENT_2_AUD",
inverseJoinColumns = @JoinColumn(name = "VJTRTAE_ID")))
})
private VersionsJoinTableRangeComponent<VersionsJoinTableRangeTestAlternateEntity> component2 = new VersionsJoinTableRangeComponent<VersionsJoinTableRangeTestAlternateEntity>();
/**
* An embedded component, containing a list of NOT AUDITED
* {@link VersionsJoinTableRangeTestAlternateEntity}-instances.
*/
@Embedded
@AttributeOverrides(value = {
@AttributeOverride(name = "str1", column = @Column(name = "STR1")),
@AttributeOverride(name = "str2", column = @Column(name = "STR2"))
})
@org.hibernate.envers.Audited
@AuditOverrides(value = {@AuditOverride(name = "str2", isAudited = false)})
private Component1 component3;
/**
* Default constructor
*/
public VersionsJoinTableRangeComponentTestEntity() {
super();
}
/**
* @return the id
*/
public Integer getId() {
return id;
}
/**
* @param id the id to set
*/
protected void setId(Integer id) {
this.id = id;
}
/**
* @return the component1
*/
public VersionsJoinTableRangeComponent<VersionsJoinTableRangeTestEntity> getComponent1() {
return component1;
}
/**
* @param component1 the component1 to set
*/
public void setComponent1(
VersionsJoinTableRangeComponent<VersionsJoinTableRangeTestEntity> component1) {
this.component1 = component1;
}
/**
* @return the component2
*/
public VersionsJoinTableRangeComponent<VersionsJoinTableRangeTestAlternateEntity> getComponent2() {
return component2;
}
/**
* @param component2 the component2 to set
*/
public void setComponent2(
VersionsJoinTableRangeComponent<VersionsJoinTableRangeTestAlternateEntity> component2) {
this.component2 = component2;
}
/**
* @return the component3
*/
public Component1 getComponent3() {
return component3;
}
/**
* @param component3 the component3 to set
*/
public void setComponent3(Component1 component3) {
this.component3 = component3;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((component1 == null) ? 0 : component1.hashCode());
result = prime * result
+ ((component2 == null) ? 0 : component2.hashCode());
result = prime * result
+ ((component3 == null) ? 0 : component3.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if ( this == obj ) {
return true;
}
if ( obj == null ) {
return false;
}
if ( getClass() != obj.getClass() ) {
return false;
}
VersionsJoinTableRangeComponentTestEntity other = (VersionsJoinTableRangeComponentTestEntity) obj;
if ( component1 == null ) {
if ( other.component1 != null ) {
return false;
}
}
else if ( !component1.equals( other.component1 ) ) {
return false;
}
if ( component2 == null ) {
if ( other.component2 != null ) {
return false;
}
}
else if ( !component2.equals( other.component2 ) ) {
return false;
}
if ( component3 == null ) {
if ( other.component3 != null ) {
return false;
}
}
else if ( !component3.equals( other.component3 ) ) {
return false;
}
if ( id == null ) {
if ( other.id != null ) {
return false;
}
}
else if ( !id.equals( other.id ) ) {
return false;
}
return true;
}
@Override
public String toString() {
StringBuilder output = new StringBuilder();
output.append( "VersionsJoinTableRangeComponentTestEntity {" );
output.append( " id = \"" ).append( this.getId() ).append( "\"," );
output.append( " component1 = \"" ).append( this.component1 )
.append( "\", " );
output.append( " component2 = \"" ).append( this.component2 ).append( "\"}" );
output.append( " component3 = \"" ).append( this.component3 ).append( "\"}" );
return output.toString();
}
}