sql >> Databasteknik >  >> RDS >> Oracle

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

Det verkar som att spring-data-jdbc-ext är EOL. Klassen SqlArrayValue packar helt enkelt inte upp anslutningen. Det slutade med att jag kastade bort JDBC-förlängningarna och rullade min egen mycket liknande klass som hanterar att packa upp anslutningen. Detta fungerar nu på WebLogic och Tomcat (med accessToUnderlyingConnectionAllowed satt till true) DBCP och Tomcats inbyggda anslutningspool (ingen accessToUnderlyingConnectionAllowed krävs).

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. Varför skulle SqlServer välja uttalande välja rader som matchar och rader som matchar och har efterföljande mellanslag

  2. kör .sql-filen med kommandoraden

  3. Hur man tar bort ett specifikt tecken från en sträng, endast när det är det första eller sista tecknet i strängen.

  4. Hur söker jag efter en sträng i en SQL Server-databas?