El problema es que la primera columna es un tipo de datos numérico, pero su declaración preparada envía un tipo de datos de cadena/VARCHAR. La instrucción se ejecuta tal cual, Oracle no tiene oportunidad de convertir su uso de nextval para obtener el valor de la secuencia.
Aquí hay una alternativa a través de la sintaxis de PreparedStatement de Java:
sql = "INSERT INTO USER
(USER_PK, ACCOUNTNUMBER, FIRSTNAME, LASTNAME, EMAIL )
VALUES
(user.nextval, ?, ?, ?, ?)";
ps = conn.prepareStatement(sql);
ps.setString(1, accountNumber);
ps.setString(2, firstName);
ps.setString(3, lastName);
ps.setString(4, email);
Esto supone que user
es una secuencia existente; cámbiela para adaptarla.