2017-05-07 3 views
0

Der Versuch, eine Grails 3-Anwendung mit jdbc6 Abhängigkeit auszuführen. Ich versuche, die folgenden Bibliotheken in meinen Groovy-Dienst zu importieren, der eine Verbindung zu einer Oracle-Datenbank herstellen soll, um eine gespeicherte Prozedur aufzurufen.Grails 3 nicht in der Lage, Klasse zu lösen oracle.sql

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) 
    } 
} 

Ich bekomme die folgenden drei Fehler beim Starten. Aber ich habe diese Klassen unter meiner Gradle: com.oracle:ojdbc6:11.2.0.3 Bibliothek. Ich bin also nicht sicher, warum es sie nicht erkennen kann.

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

Irgendwelche Vorschläge, warum diese Klassen nicht gefunden werden können?

Antwort

0
oracle.jdbc.OracleCallableStatement 

ist nicht die richtige Klasse für die von Ihnen verwendete Version der ojdbc-Abhängigkeit.

, das zu diesem Import und Klasse aktualisiert werden soll:

import java.sql.CallableStatement 
CallableStatement callableStmt = null 

Hier ist ein Link, die Sie zeigen, was Sie die anderen verworfenen Klassen (oracle.sql.ARRAY und oracle.sql.ArrayDescriptor) Sie versuchen, tun müssen, ersetzen zu verwenden : https://docs.oracle.com/database/121/JAJDB/deprecated-list.html#class

Verwandte Themen