Spring'in NamedParameterJdbcTemplate ve GeneratedKeyHolder kullanarak ROWID veya birincil anahtarı ayıklamak çalışıyorum.NamedParameterJdbcTemplate ve GeneratedKeyHolder kullanarak birincil anahtarı (veya ROWID) ayıklamanın bir yolu var mı?
Böyle bir şey yapmaya çalışıyorum.
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);
sorguda yukarıda yürüttükten sonra bunu istisna altında atıyor keyHolder.getKey().longValue()
yapmaya çalıştıklarında. Anladığımdan bu http://docs.oracle.com/cd/B28359_01/java.111/b31224/datacc.htm geçti zaman
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]
o ojdbc java rowID için Oracle ROWID eşleme değildir (i did umut).
Herhangi biri, anahtarı çıkarmak için herhangi bir yol olduğunu önerebilir mi? (Evet, PreparedStatement kullanılarak yapılabilir, ancak kodumu bazı koşullarda okumak ve değiştirmek için çirkin yapıyor). Önerileriniz çok takdir ediliyor.
oluşturulan sütun adıdır Aynı sorun varsa, bilmiyorum ama bu bağlantıyı kontrol etmek için http://stackoverflow.com/questions/4496336/nextval-jdbc-insert-problem. –
ROWID sayı türü değil, lütfen dizgiyi almaya çalışın. – Jason