0

尝试运行具有jdbc6依赖性的 grails 3 应用程序。我正在尝试在我的 groovy 服务中导入以下库,该服务应该连接到 Oracle 数据库以调用存储过程。

import oracle.sql.ARRAY
import oracle.sql.ArrayDescriptor
import oracle.jdbc.OracleCallableStatement
import java.sql.Connection
import groovy.sql.Sql

import org.apache.poi.ss.usermodel.Workbook
import org.apache.poi.ss.usermodel.WorkbookFactory
import org.apache.poi.ss.usermodel.Sheet
import org.apache.poi.ss.usermodel.Cell
import org.apache.poi.ss.usermodel.Row
import org.apache.poi.ss.usermodel.DataFormatter
import com.wwt.itemuploadapi.rectypes.Rectype

import java.sql.SQLException

class ExcelService {

def dataSource

private static final FILE_HEADERS = [
        'First Name': 'firstName',
        'Last Name': 'lastName'
]

def callApi(List<Rectype> rectype) {

    OracleCallableStatement callableStmt = null

    try {
        def conn = dataSource.getConnection()
        ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("TBLTYPE", conn.unwrap(oracle.jdbc.OracleConnection.class))
        ARRAY dataElementsArray = new ARRAY(descriptor, conn.unwrap(oracle.jdbc.OracleConnection.class), (Object[])rectype.toArray())
        Map map = conn.getTypeMap()
        map.put("REC_TYPE", Rectype.class)
        callableStmt = (OracleCallableStatement)conn.prepareCall("{call package.procedure_name(?)}")
        callableStmt.setArray(1, dataElementsArray);

        callableStmt.execute()
    }
    catch (SQLException ex) {
        println(ex)
    }
}

启动时出现以下三个错误。但是我的Gradle: com.oracle:ojdbc6:11.2.0.3图书馆下有这些课程。所以我不确定为什么它不能识别它们。

 `unable to resolve class oracle.sql.ARRAY`
 `unable to resolve class oracle.sql.ArrayDescriptor`
 `unable to resolve class oracle.jdbc.OracleCallableStatement`

有什么建议为什么找不到这些课程?

4

1 回答 1

0
oracle.jdbc.OracleCallableStatement 

不再是您正在使用的 ojdbc 依赖版本的正确类。

这应该更新到这个导入和类:

import java.sql.CallableStatement
CallableStatement callableStmt = null

这是一个链接,它将向您展示您需要做什么来替换您尝试使用 的其他已弃用的类(oracle.sql.ARRAY和): https ://docs.oracle.com/database/121/JAJDB/deprecated-list.html#班级oracle.sql.ArrayDescriptor

于 2017-05-07T17:42:01.310 回答