1

Java 配列を PLSQL ストアド プロシージャに渡そうとしていますが、実行しようとすると、次の例外が発生します。

java.sql.SQLException: Inconsistent java and sql object types

私のDAOクラスのコードスニペット

List projectList = new ArrayList();

public void saveRecord(List<Project> project) 
                       throws DatabaseException,SQLException {

    for (Project items: project) {
        insertRecord(items);
    }
}

private void insertRecord(Project project) throws SQLException {
    projectList.add(project);

callablestatement = 
         (OracleCallableStatement)connection.prepareCall("{call my_proc(?)}");

Object[] project1 = projectList.toArray();

StructDescriptor projectTypeDesc = StructDescriptor.createDescriptor("MY_TYPE",
conn);

STRUCT structProject1 = new STRUCT(projectTypeDesc, 
connection, project);

STRUCT[] structArrayOfProjects = {structProject1};

 ArrayDescriptor projectTypeArrayDesc = ArrayDescriptor.createDescriptor
("MY_ARRAY", connection); 

ARRAY arrayOfProjects = new ARRAY(projectTypeArrayDesc, connection,
structArrayOfProjects);// error in this line

callablestatement.setArray(1, arrayOfProjects);  

この問題を解決するにはどうすればよいですか?

編集 1

私がするなら

Object[] project1 = new Object[]{project.getProjectId(), project.getProjectTitle()};

その後、エラーは発生せず、レコードはテーブルに挿入されます。

しかし、もし私が

Object[] project1 = projectList.toArray();

その後、例外がスローされますInconsistent java and sql object types

4

1 に答える 1