Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

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

Có vẻ như spring-data-jdbc-ext là EOL. Lớp SqlArrayValue đơn giản không phải là bỏ gói kết nối. Tôi đã kết thúc việc loại bỏ các phần mở rộng JDBC và cuộn lớp rất tương tự của riêng tôi để xử lý việc mở kết nối. Tính năng này hiện hoạt động trên WebLogic và Tomcat (với accessToUnderlyingConnectionAllowed được đặt thành true) DBCP và nhóm kết nối gốc của Tomcat (không yêu cầu accessToUnderlyingConnectionAllowed).

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. vượt qua giới hạn 32k khi chèn tham số oracle clob IN bằng Spring StoredProcedure

  2. Làm cách nào để tạo trường varchar2 ngắn hơn trong Oracle?

  3. Bảng SQL không tồn tại

  4. Nhận thêm hàng - Sau khi nối 3 bảng bằng cách sử dụng Nối trái

  5. Một chuỗi thực thể cụ thể