Grails 3 не может разрешить класс oracle.sql

Попытка запустить приложение Grails 3 с зависимостью jdbc6. Я пытаюсь импортировать приведенные ниже библиотеки в свой отличный сервис, который должен подключаться к базе данных 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`

Любые предложения, почему эти классы не могут быть найдены?


person Andrew Hummel    schedule 07.05.2017    source источник


Ответы (1)


oracle.jdbc.OracleCallableStatement 

не является правильным классом для используемой версии зависимости ojdbc.

Это должно быть обновлено до этого импорта и класса:

import java.sql.CallableStatement
CallableStatement callableStmt = null

Вот ссылка, которая покажет вам, что вам нужно сделать, чтобы заменить другие устаревшие классы (oracle.sql.ARRAY и oracle.sql.ArrayDescriptor), которые вы пытаетесь использовать: https://docs.oracle.com/database/121/JAJDB/deprecated-list.html#class

person LeslieV    schedule 07.05.2017