title: Hibernate saveOrUpdate does not update
body: <p>I am trying to update a table row using the session.saveOrUpdate() method in Hibernate. </p>
  
  <p>However, it is unable to update the row and tries to save it by producing an insert statement. This insert does not work due to a few non-nullable fields in my DB.</p>
  
  <p>I am able to retrieve the Id of the object to be saved at the DAO layer, so I am not able to understand why it doesn't just update the corresponding row in the DB table.</p>
  
  <p>Bean Class: (BaseEntityBean has the Id, CreatedBy, etc.)</p>
  
  <pre><code>public class EmployeeMasterBean extends BaseEntityBean {
  
  /**
   * 
   */
  private static final long serialVersionUID = 1L;
  
  @Column(name = "FirstName", nullable = false)
  private String firstName;
  
  @Column(name = "LastName", nullable = false)
  private String lastName;
  
  @Temporal(TemporalType.TIMESTAMP)
  @Column(name = "Dob", insertable = true, updatable = true, nullable = false)
  private Date dateOfBirth;
  
  @Column(name = "Email", length = 100)
  private String email;
  
  @Column(name = "PhoneNumber", nullable = false)
  private String phoneNumber;
  
  @Column(name = "Address1", nullable = false)
  private String address1;
  
  @Column(name = "Type", nullable = false)
  private Short employeeType;
  
  @Column(name = "Gender", nullable = false)
  private Short gender;
  
  
  /**
   * @return the firstName
   */
  public final String getFirstName() {
      return firstName;
  }
  
  /**
   * @param firstName the firstName to set
   */
  public final void setFirstName(String firstName) {
      this.firstName = firstName;
  }
  
  /**
   * @return the lastName
   */
  public final String getLastName() {
      return lastName;
  }
  
  /**
   * @param lastName the lastName to set
   */
  public final void setLastName(String lastName) {
      this.lastName = lastName;
  }
  
  /**
   * @return the dateOfBirth
   */
  public final Date getDateOfBirth() {
      return dateOfBirth;
  }
  
  /**
   * @param dateOfBirth the dateOfBirth to set
   */
  public final void setDateOfBirth(Date dateOfBirth) {
      this.dateOfBirth = dateOfBirth;
  }
  
  /**
   * @return the email
   */
  public final String getEmail() {
      return email;
  }
  
  /**
   * @param email the email to set
   */
  public final void setEmail(String email) {
      this.email = email;
  }
  
  /**
   * @return the phoneNumber
   */
  public final String getPhoneNumber() {
      return phoneNumber;
  }
  
  /**
   * @param phoneNumber the phoneNumber to set
   */
  public final void setPhoneNumber(String phoneNumber) {
      this.phoneNumber = phoneNumber;
  }
  
  /**
   * @return the address1
   */
  public final String getAddress1() {
      return address1;
  }
  
  /**
   * @param address1 the address1 to set
   */
  public final void setAddress1(String address1) {
      this.address1 = address1;
  }
  
  /**
   * @return the employeeType
   */
  public final Short getEmployeeType() {
      return employeeType;
  }
  
  /**
   * @param employeeType the employeeType to set
   */
  public final void setEmployeeType(Short employeeType) {
      this.employeeType = employeeType;
  }
  
  
  /**
   * @return the gender
   */
  public final Short getGender() {
      return gender;
  }
  
  /**
   * @param gender the gender to set
   */
  public final void setGender(Short gender) {
      this.gender = gender;
  }
  } 
  </code></pre>
  
  <p>DAO Method:</p>
  
  <pre><code>public EmployeeMasterBean saveOrUpdateEmployee(EmployeeMasterBean employeeMasterBean)  throws Exception{
      Session session = null;
      Transaction tx = null;
  
      try {
          session = HibernateUtil.getSessionFactory().openSession();
          tx = session.beginTransaction();
  
          session.saveOrUpdate(employeeMasterBean);
  
          tx.commit();
      } finally {
          session.close();
      }
      return employeeMasterBean;
  }
  </code></pre>
  
  <p>Eclipse debugger exceptions thrown are:</p>
  
  <pre><code>could not insert: [com.indven.gpil.hrd.entity.EmployeeMasterBean]
  com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'CreatedBy' cannot be null
  </code></pre>