sql >> Database teknologi >  >> RDS >> Oracle

Tomcat 9 m/ Apache DBCP + Spring 5 + Oracle 12c + SqlArrayValue

Det ser ud til, at spring-data-jdbc-ext er EOL. SqlArrayValue-klassen pakker simpelthen ikke forbindelsen ud. Jeg endte med at kassere JDBC-udvidelserne og rullede min egen meget lignende klasse, som håndterer udpakning af forbindelsen. Dette virker nu på WebLogic og Tomcat (med accessToUnderlyingConnectionAllowed sat til true) DBCP og Tomcats oprindelige forbindelsespulje (ingen accessToUnderlyingConnectionAllowed påkrævet).

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. Tæl antallet af rækker i 30 dages skraldespande

  2. Hvorfor returnerer MySQL nogle flydere i videnskabelig notation, men ikke andre?

  3. Hvorfor returnerer PostgreSQL ikke null-værdier, når betingelsen er <> sand

  4. Indsætter post i MySQL-database ved hjælp af C#