Я пытаюсь получить объект OrdImage из базы данных Oracle, используя выбор по двойной таблице (выберите ordsys.ordimage.init () из двойной) из-за использования в создании OrdImageSinature для целей поиска в операторе IMGS Similar. Проблема в том, что после сохранения данных в прокси ORDImage я получаю эту ошибку:
java.sql.SQLException: ORA-22275: invalid LOB locator specified
ORA-06512: at "SYS.DBMS_LOB", line 797
ORA-06512: at "ORDSYS.ORDSOURCE", line 778
ORA-06512: at "ORDSYS.ORDIMAGE", line 508
ORA-06512: at line 1
Мой код следующий:
Statement statement = connection.createStatement();
OracleResultSet result = (OracleResultSet) statement.executeQuery("SELECT ordsys.ordimage.init(), ordsys.ordimagesignature.init() FROM DUAL");
if (result.next()) {
OrdImage imageProxy = (OrdImage) result.getORAData(1, OrdImage.getORADataFactory());
OrdImageSignature imageSignatureProxy = (OrdImageSignature) result.getORAData(2, OrdImageSignature.getORADataFactory());
statement.close();
result.close();
imageProxy.loadDataFromByteArray(image.write().toByteArray()); //this line invokes error
imageProxy.setProperties();
imageSignatureProxy.generateSignature(imageProxy);
//here will be performed search operation
}
Изображение, которое я помещаю в imageProxy, хранится локально на жестком диске (оно не хранится в базе данных). Есть ли обходной путь, как создать OrdImageSignature без создания OrdImage, чтобы обойти эту ошибку или как ее исправить?
Большое спасибо!