sql >> Database >  >> RDS >> Oracle

Tomcat 9 met Apache DBCP + Spring 5 + Oracle 12c + SqlArrayValue

Het lijkt erop dat spring-data-jdbc-ext EOL is. De klasse SqlArrayValue maakt de verbinding eenvoudigweg niet los. Uiteindelijk heb ik de JDBC-extensies overboord gegooid en mijn eigen zeer vergelijkbare klasse gedraaid die het uitpakken van de verbinding afhandelt. Dit werkt nu op WebLogic en Tomcat (met accessToUnderlyingConnectionAllowed ingesteld op true) DBCP en Tomcat's eigen verbindingspool (geen accessToUnderlyingConnectionAllowed vereist).

import java.sql.Connection;
import java.sql.SQLException;

import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.jdbc.core.support.AbstractSqlTypeValue;

import oracle.jdbc.OracleConnection;

public class OracleSqlArrayValue<T> extends AbstractSqlTypeValue {
    private T[] values;
    private String defaultTypeName;

    public OracleSqlArrayValue(T[] values) {
        this.values = values;
    }

    public OracleSqlArrayValue(T[] values, String defaultTypeName) {
        this.values = values;
        this.defaultTypeName = defaultTypeName;
    }

    @Override
    protected Object createTypeValue(Connection conn, int sqlType,
            String typeName) throws SQLException {

        if (typeName == null && defaultTypeName == null) {
            throw new InvalidDataAccessApiUsageException(
                    "No type named defined. Instantiate class with default type name.");
        }

        if (!conn.isWrapperFor(OracleConnection.class)) {
            throw new InvalidDataAccessApiUsageException(
                    "Unable to unwrap OracleConnection. Ensure you are connecting to an Oracle DB.");
        }

        return conn.unwrap(OracleConnection.class).createOracleArray(
                typeName != null ? typeName : defaultTypeName, values);
    }
}



  1. psql:kan geen verbinding maken met de server:geen bestand of map (Mac OS X)

  2. Regex legt vervolgens de eerste woorden vast vóór het karakter - orakel

  3. Een SQL Server-tabel maken van een C#-gegevenstabel

  4. Kan 'false' overeenkomen met een string in mysql?