title: java.sql.SQLIntegrityConstraintViolationException
body: <p>I am getting this error when running a save insert/update command:</p>
  
  <pre><code>SEVERE: null
  java.sql.SQLIntegrityConstraintViolationException: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'SQL110207185137350' defined on 'EMPLOYEE'.
  null, Boris Wilkins
  </code></pre>
  
  <p>If anyone can spot why this error is happening it would be great.</p>
  
  <p>here is the code:</p>
  
  <pre><code> /////////////////////////////////////////////
      ///   UPDATE methods
      /** Saves an existing pkg in the database */
      public void save(Employee pkg) throws DataException {
          Connection conn = null;
          try {
              conn = ConnectionPool.getInstance().get();
              save(pkg, conn);
              conn.commit();
  
          } catch (Exception e) {
              try {
                  conn.rollback();
              } catch (SQLException ex) {
                  throw new DataException("We're currently upgrading our site to serve you better.", e);
              }
              throw new DataException("Problem saving the Employee", e);
  
          } finally {
              ConnectionPool.getInstance().release(conn);
  
          }//update
      }
  
      /** Internal method to update a pkg in the database */
      void save(Employee emp, Connection conn) {
          // update the cache
          Cache.getInstance().put(emp.getId(), emp);
          // if not dirty, return
          if (!emp.isDirty()) {
              return;
          }
          // call either update() or insert()
          if (emp.isObjectAlreadyInDB()) {
              update(emp, conn);
          } else {
              insert(emp, conn);
          }
  
      }//save
  
      /** Saves an existing pkg to the database */
  
  
  
      //NEED HELP WITH EXECUTE STATEMENT!!!
  
  
      private void update(Employee pkg, Connection conn) {
          try {
              // run the update SQL
              PreparedStatement pstmt = conn.prepareStatement("UPDATE Employee SET id=?, name1=?, username1=?, password=?, type=? WHERE id=?");
              pstmt.setString(1, pkg.getId());
              pstmt.setString(2, pkg.getName1());
              pstmt.setString(3, pkg.getUserName1());
              pstmt.setString(4, pkg.getPassword());
              pstmt.setString(5, pkg.getType());
              pstmt.setString(6, pkg.getId());
  
              pstmt.executeUpdate();
              pstmt.close();
              // update the dirty variable
              pkg.setDirty(false);
          } catch (SQLException ex) {
              Logger.getLogger(EmployeeDAO.class.getName()).log(Level.SEVERE, null, ex);
          }
  
  
      }
  
      /** Inserts a new pkg into the database */
      private void insert(Employee pkg, Connection conn) {
          try {
              // run the insert SQL
              PreparedStatement pstmt = conn.prepareStatement("INSERT into Employee (id, name1, username1, password, type) values(?, ?, ?, ?, ?)");
              pstmt.setString(1, pkg.getId());
              pstmt.setString(2, pkg.getName1());
              pstmt.setString(3, pkg.getUserName1());
              pstmt.setString(4, pkg.getPassword());
              pstmt.setString(5, pkg.getType());
              // update the dirty variable
  
              pstmt.execute();
              pstmt.close();
              pkg.setDirty(false);
          } catch (SQLException ex) {
              Logger.getLogger(EmployeeDAO.class.getName()).log(Level.SEVERE, null, ex);
          }
      }
  </code></pre>
  
  <p>Code for alreadyInDB:</p>
  
  <pre><code>/** Returns whether the object is in the DB or not */
    boolean isObjectAlreadyInDB() {
      return objectAlreadyInDB;
    }//isObjectAlreadyInDB
  
    /** 
     * Sets whether the object is already in the DB.  This method
     * is called ONLY from the DAO responsible for this object.
     */
    void setObjectAlreadyInDB(boolean objectAlreadyInDB) {
      this.objectAlreadyInDB = objectAlreadyInDB;
    }//setObjectAlreadyInDB
  </code></pre>