Estoy tratando de extraer ROWID o la clave primaria usando Spring's NamedParameterJdbcTemplate y GeneratedKeyHolder.¿Hay alguna forma de extraer la clave principal (o ROWID) usando NamedParameterJdbcTemplate y GeneratedKeyHolder?
Estoy tratando de hacer algo como esto.
MapSqlParameterSource parameters = new MapSqlParameterSource()
.addValue("param1", value1)
.addValue("param2", value2);
KeyHolder keyHolder = new GeneratedKeyHolder();
namedParameterJdbcTemplate.update("INSERT INTO TABLE(ID, col1, col2)"
+ "VALUES(TABLE.TABLE_SEQ.NEXTVAL, :param1, :param2)",
parameters, keyHolder);
Después de ejecutar por encima de consulta cuando intento hacer keyHolder.getKey().longValue()
es tirar abajo excepción.
HTTP Status 500 - Request processing failed; nested exception is org.springframework.dao.DataRetrievalFailureException: The generated key is not of a supported numeric type. Unable to cast [oracle.sql.ROWID] to [java.lang.Number]
Cuando fui a través de este http://docs.oracle.com/cd/B28359_01/java.111/b31224/datacc.htm entiendo (espero que lo hice) que ojdbc no está mapeando RowId oráculo para RowId java.
¿Puede alguien sugerir alguna forma de extraer la clave? (Sí, se puede hacer usando PreparedStatement, pero está haciendo que mi código sea algo desagradable de leer y manipular en algunas condiciones). Tus sugerencias son muy apreciadas.
No sé si tienes el mismo problema pero revisa este enlace http://stackoverflow.com/questions/4496336/nextval-jdbc-insert-problem. –
ROWID no es un tipo de número, intente obtener una cadena. – Jason