2015-12-09 3 views
4

Я хранил xml в качестве байтового массива в столбце clob в базе данных оракула. Сейчас пытается использовать JdbcTemplate, чтобы получить результирующую как массив байт в метании рессоры batch.It в поле ниже Exceptionspring jdbctemplate get byte array

org.springframework.dao.InvalidDataAccessApiUsageException: StatementCallback; SQL [выбрать DEFAULT_REPORT_PARAM_XML из cfg_report_list где report_name = 'Платежи STP Report "]; Неподдерживаемой функции, вложенное исключение составляет java.sql.SQLFeatureNotSupportedException: неподдерживаемый особенность

PFB примера кода, который я использую

byte[] configxml = jdbcTemplate.queryForObject(
       "select DEFAULT_REPORT_PARAM_XML from cfg_report_list where report_name='Payments STP Report'", 
       byte[].class); 

Пожалуйста, обратите внимание, что я использую пружинный пакет 3.0.1 RELEASE.

Пожалуйста, дайте мне знать, решение этой проблемы.

Благодаря

ответ

3

Попробуйте использовать RowMapper и затем использовать ResultSet.getBlob

public class YourXmlRowMapper implements RowMapper<byte[]> { 

    public byte[] mapRow(ResultSet rs, int rowNum) throws SQLException { 
     Blob column = rs.getBlob("DEFAULT_REPORT_PARAM_XML"); 
     return column.getBytes(1, column.length()); 
    } 
} 



byte[] configxml = jdbcTemplate.queryForObject(
      "select DEFAULT_REPORT_PARAM_XML from cfg_report_list where report_name='Payments STP Report'", 
      new YourXmlRowMapper()); 
2

Нет необходимости называть getBlob(); вы должны уметь упростить так:

byte[] configxml = jdbcTemplate.queryForObject(
    "select DEFAULT_REPORT_PARAM_XML from cfg_report_list where report_name='Payments STP Report'", 
    (rs, rowNum) -> rs.getBytes(1)); 
0

Просто используйте байт [] вместо Byte [].