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