title: how to use subselect annotation to define view entity class
body: <p>I want to define a readonly view entity class. Thats why I have written like following class. But according to jars which are used for the project does not contain Subselect and Synchronize annotation class. In order to achieve this issue i tried to change some jars with old ones. But occured another incompatible exceptions. I'd learn strongly if which compatible jar list includes org.hibernate.annotations.Subselect.class</p>
  
  <p>Developed in ADF platform and Weblogic 10.3
  Using these hibernate releases:</p>
  
  <pre><code>hibernate3.jar
  hibernate-annotations-3.4.0.GA.jar
  hibernate-commons-annotations-3.3.0.ga.jar
  hibernate-entitymanager-3.4.0.GA.jar
  hibernate-validator-4.1.0.Final.jar
  </code></pre>
  
  <p>This composition was enough and useful for me until required of using Subselect annotation class </p>
  
  <p>Plz help me 
  Thanks in advance
  Brgds</p>
  
  <pre><code>import com.arsivist.structure.BaseEntityView;
  
  import java.util.ArrayList;
  import java.util.Collection;
  
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.Id;
  import javax.persistence.JoinColumn;
  import javax.persistence.ManyToOne;
  import javax.persistence.OneToMany;
  import javax.persistence.Transient;
  
  import org.hibernate.annotations.Immutable;
  import org.hibernate.annotations.Subselect;
  import org.hibernate.annotations.Synchronize;
  
  
  @Entity(name = "IntegrationDepartment")
  @Immutable
  @Subselect("SELECT * FROM DEPARTMENTVIEW")
  @Synchronize("DEPARTMENTVIEW")
  public class IntegrationDepartment extends BaseEntityView
  {
  private IntegrationDepartment dependentDepartment;
  private String code;
  private String name;
  private int departmentLevel;
  private boolean excludeDistribution;
  
  private Collection&lt;IntegrationDepartment&gt; departmentList;
  
  public IntegrationDepartment()
  {
  entityName = "IntegrationDepartment";
  departmentList = new ArrayList&lt;IntegrationDepartment&gt;();
  }
  
  public IntegrationDepartment(int id, String code)
  {
  entityName = "IntegrationDepartment";
  departmentList = new ArrayList&lt;IntegrationDepartment&gt;();
  
  this.id = id;
  this.code = code;
  }
  
  @Id
  @Column(name = "ID")
  public int getId()
  {
  return id;
  }
  
  public void setId(int id)
  {
  this.id = id;
  }
  
  public void setDependentDepartment(IntegrationDepartment dependentDepartment)
  {
  this.dependentDepartment = dependentDepartment;
  }
  
  @ManyToOne(targetEntity = com.roketsan.integrationmodel.entity.IntegrationDepartment.class)
  @JoinColumn(name = "DEPENDENTDEPARTMENTID")
  public IntegrationDepartment getDependentDepartment()
  {
  return dependentDepartment;
  }
  
  public void setCode(String code)
  {
  this.code = code;
  }
  
  @Column(name = "CODE")
  public String getCode()
  {
  return code;
  }
  
  public void setName(String name)
  {
  this.name = name;
  }
  
  @Column(name = "NAME")
  public String getName()
  {
  return name;
  }
  
  public void setDepartmentLevel(int departmentLevel)
  {
  this.departmentLevel = departmentLevel;
  }
  
  @Column(name = "DEPARTMENTLEVEL")
  public int getDepartmentLevel()
  {
  return departmentLevel;
  }
  
  public void setDepartmentList(Collection&lt;IntegrationDepartment&gt; departmentList)
  {
  this.departmentList = departmentList;
  }
  
  @OneToMany(mappedBy = "dependentDepartment")
  @JoinColumn(name = "DEPENDENTDEPARTMENTID")
  public Collection&lt;IntegrationDepartment&gt; getDepartmentList()
  {
  return departmentList;
  }
  
  public void setExcludeDistribution(boolean excludeDistribution)
  {
  this.excludeDistribution = excludeDistribution;
  }
  
  @Column(name = "EXCLUDEDISTRIBUTION")
  public boolean isExcludeDistribution()
  {
  return excludeDistribution;
  }
  
  @Override
  @Transient
  public int compareTo(Object object)
  {
  if (!(object instanceof BaseEntityView))
  throw new ClassCastException();
  
  IntegrationDepartment baseEntity = (IntegrationDepartment)object;
  Integer comparableElementA = getDepartmentLevel();
  Integer comparableElementB = baseEntity.getDepartmentLevel();
  
  return comparableElementA.compareTo(comparableElementB);
  }
  
  public String toString()
  {
  return "" + getCode();
  }
  }
  </code></pre>