CLOB de Oracle en Weblogic
Si tenemos una aplicación Java corriendo en WebLogic la forma de acceder a un CLOB de Oracle para escritura se maneja de una forma especial. en nuestro caso utilizamos JDBC y por consiguiente la clase weblogic.jdbc.vendor.oracle.OracleThinClob. Aqui dejamos un ejemplo:
import java.io.IOException;
import java.io.Writer;
import java.sql.Clob;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.support.JdbcDaoSupport;
import weblogic.jdbc.vendor.oracle.OracleThinClob;
import com.dosideas.dao.UnDao;
public class UnDaoImpl extends JdbcDaoSupport implements UnDao {
/** * Query que busca el Clob por id. * SELECT ARCHIVO FROM TABLA_CON_ARCHIVO WHERE ID = ? FOR UPDATE; */ private String query;
/** * Obtiene el writer del Clob. */ public Writer obtenerWriter(Long id) { Clob clobReporte = (Clob) getJdbcTemplate() .queryForObject(getQuery(), new Object[] {idPeticion }, new RowMapper() {
public Object mapRow(ResultSet resultSet, int rowNum)
throws SQLException {
return (Clob) resultSet.getClob(1);
} }); Writer writerDelClob = null; try { writerDelClob = ((OracleThinClob) clobReporte).getCharacterOutputStream(); } catch (SQLException e) { // Tratar el error }
return writerDelClob;
}