spring-data-jdbc-ext は EOL のようです。 SqlArrayValue クラスは単に接続をアンラップしていません。私は最終的に JDBC 拡張機能を放棄し、接続のアンラップを処理する独自の非常によく似たクラスを展開しました。これは現在、WebLogic と Tomcat (accessToUnderlyingConnectionAllowed を true に設定) で機能し、DBCP と Tomcat のネイティブ接続プール (accessToUnderlyingConnectionAllowed は不要) で動作します。
java.sql.Connection のインポート;java.sql.SQLException のインポート;org.springframework.dao.InvalidDataAccessApiUsageException のインポート;org.springframework.jdbc.core.support.AbstractSqlTypeValue のインポート;oracle.jdbc.OracleConnection のインポート;public class OracleSqlArrayValue extends AbstractSqlTypeValue { プライベート T[] 値;プライベート文字列の defaultTypeName; public OracleSqlArrayValue(T[] 値) { this.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( "型名が定義されていません。デフォルトの型名でクラスをインスタンス化します。" ); } if (!conn.isWrapperFor(OracleConnection.class)) { throw new InvalidDataAccessApiUsageException( "OracleConnection のラップを解除できません。Oracle DB に接続していることを確認してください。"); } return conn.unwrap(OracleConnection.class).createOracleArray( typeName !=null ? typeName :defaultTypeName, values); }}コード> プレ>