title: Criteria.uniqueResult is returning null, but no error is thrown
body: <p>I'm just learning hibernate and I'm trying to query a table to find a person with a specific id. When i call criteria.unique result, no error is thrown, but it returns a null value, can anyone help me to figure out whats going one? </p>
  
  <pre><code>@Entity
  @Table(name="employees")
  public class Employee {
  private long emp_no; 
  private Date birth_date; 
  private String first_name;
  private String last_name;
  private char gender;
  private Date hire_date; 
  
  private Set&lt;DepartmentEmp&gt; department_emp = new HashSet&lt;DepartmentEmp&gt;(); 
  private Set&lt;DepartmentManager&gt; department_manager = new HashSet&lt;DepartmentManager&gt;();
  private Set&lt;Projects&gt; projects; 
  private ContactInfo contactInfo; 
  
  
  public Employee(){};
  public Employee(long empt_no, Date birth_date, String first_name, String last_name, 
          char gender, Date hire_date){
          this.emp_no = emp_no;
          this.birth_date = birth_date; 
          this.first_name = first_name;
          this.last_name = last_name;
          this.gender = gender; 
          this.hire_date = hire_date; 
  }
  
   @Id
   @Column(name="emp_no")
      public long getEmp_no() { return emp_no; }
      public void setEmp_no(long emp_no) {this.emp_no=emp_no;}
  
  
   @Column(name="birth_date")
      public Date getBirth_date() { return birth_date; }
      public void setBirth_date(Date birth_date) {this.birth_date = birth_date;}
  
  
   @Column(name="first_name")
      public String getFirst_name() { return first_name; } 
      public void setFirst_name(String name) { this.first_name = name; }
  
  
  
   @Column(name="last_name")
      public String getLast_name() { return last_name; } 
      public void setLast_name(String name) { this.last_name = name; }
  
  
   @Column(name="gender")
      public char getGender() { return gender; } 
      public void setGender(char gender) {this.gender = gender;}
  
  
    @Column(name="hire_date")
      public Date getHire_date() { return hire_date; } 
      public void setHire_date(Date hire_date) {this.hire_date = hire_date;}
  
      @OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
      @JoinColumn(name="emp_no")
      public ContactInfo getContactInfo() { return contactInfo; }
      public void setContactInfo(ContactInfo info) { this.contactInfo = info; }
  
    @OneToMany(mappedBy="employee", targetEntity=DepartmentEmp.class,
      cascade=CascadeType.ALL)
    @Fetch(value = FetchMode.SELECT) 
      public Set&lt;DepartmentEmp&gt; getDepartment_emp() { return department_emp; }
      public void setDepartment_emp(Set&lt;DepartmentEmp&gt; department_emp) { this.department_emp = department_emp; }
  
  
  
      @OneToMany(mappedBy="employee", targetEntity=DepartmentManager.class,
      cascade=CascadeType.ALL)
      @Fetch(value = FetchMode.SELECT) 
  
      public Set&lt;DepartmentManager&gt; getDepartment_manager() { return department_manager; }
      public void setDepartment_manager(Set&lt;DepartmentManager&gt; department_manager) { this.department_manager = department_manager; }
  
      @ManyToMany
        @JoinTable(name="employee_projects", 
              joinColumns={@JoinColumn(name="employee_emp_no")},
              inverseJoinColumns={@JoinColumn(name="projects_proj_num")})
      @Fetch(value = FetchMode.SELECT) 
          public Set&lt;Projects&gt; getProjects() { return projects; }
          public void setProjects(Set&lt;Projects&gt; projects) { this.projects = projects; }
  
      public void print() {
          System.out.printf("%d: %s %s %s %c %s\n", emp_no, birth_date.toString(), first_name, last_name, gender, hire_date.toString()); 
      } 
  
      public static void list()
      {
          Session session = HibernateContext.getSession();
          Criteria criteria = session.createCriteria(Employee.class);
          criteria.addOrder(Order.asc("emp_no"));
  
          List &lt;Employee&gt; employees = criteria.list();
          System.out.println("All Employees:");
          for (Employee employee : employees) {
              employee.print();
          }
          session.close();
      }
  
      //TODO finish 4 methods
  
      public static Employee find(long emp_no){
          Employee prototype = new Employee();
          prototype.setEmp_no(emp_no);
          Example ex = Example.create(prototype);
  
          Session sess = HibernateContext.getSession();
          Criteria criteria = sess.createCriteria(Employee.class);
          criteria.add(ex);
  
          Employee e = (Employee) criteria.uniqueResult();
          return e;
      }
      public static Employee find(String first, String last){
          Employee prototype = new Employee();
          prototype.setFirst_name(first);
          prototype.setLast_name(last);
          Example ex = Example.create(prototype);
  
          Session sess = HibernateContext.getSession();
          Criteria criteria = sess.createCriteria(Employee.class);
          criteria.add(ex);
  
          Employee e = (Employee) criteria.uniqueResult();
  
          sess.close();
          return e;
      }
      public static void main(String [] args){
             Class klasses [] = {Employee.class, DepartmentEmp.class, DepartmentManager.class, ContactInfo.class,
                                  Salaries.class, Titles.class, Department.class, Projects.class};
              HibernateContext.addClasses(klasses);
              Employee.find((long)10001).print();
      }
    }
  </code></pre>
  
  <p>HibernateContext:</p>
  
  <pre><code>public class HibernateContext {
  
  public static AnnotationConfiguration config = null;
  public static SessionFactory factory = null;
  
  /**
   * sets configuration if null
   */
  private static void setConfiguration(){
      if(config == null){
          config = new AnnotationConfiguration();
          config.configure();
      }
  }
  
  /**
   * sets factory if null
   */
  private static void setFactory(){
      if(factory == null){
          setConfiguration();
          factory = config.buildSessionFactory();
      }
  }
  
  /**
   * Opens session from the factory
   */
  public static Session getSession(){
      setFactory();
      return factory.openSession();
  }
  
  /**
   * Creates a schema from the configuration
   */
  public static void createSchema(){
      setConfiguration();
      (new SchemaExport(config)).create(true, true);
  
  }
  
  /**
   * Adds a new class object to the database
   */
  public static void addClass(Class c){
      setConfiguration();
      config.addAnnotatedClass(c);
  }
  
  /**
   * Adds a list of class objects to the database
   */
  public static void addClasses(Class classes[]){
      for(Class c : classes){
          addClass(c);
      }
  }
  </code></pre>
  
  <p>}</p>
  
  <p>I have ommited the other classes since they arent involved in this query, but when i run the main function in Employee, the stack trace just says null pointer exception at the find.print(); line. I know the database is populated and running Employee.list() works just find, so i'm struggling to figure out what exactly is wrong. thanks for the help!</p>