Я получил ответ, попробовав несколько методов и перестановок. Вы можете вызвать функцию db с помощью nativeQuery или с помощью StoredProcedureQuery (который внутренне использует тот же nativequery, что и CallableStatement)
Вы можете автоматически связать свой класс entityManager:
@Autowired
EntityManager entityManager;
Вы можете вызвать хранимую Procedure или функция от StoredProcedureQuery, например:
StoredProcedureQuery query = entityManager
.createStoredProcedureQuery("schema_name.function_name")
.registerStoredProcedureParameter(1, String.class, ParameterMode.IN)
.registerStoredProcedureParameter(1, Integer.class, ParameterMode.IN)
.registerStoredProcedureParameter(1, Integer.class, ParameterMode.IN)
.setParameter(1, param1)
.setParameter(2, param2)
.setParameter(3, param3);
query.execute();
List<Object[]> dataList= query.getResultList();
. Вы получите resultList в форме списка. Object [] будет иметь значения, сопоставленные с вашим типом возврата, определенным функцией в схеме, и вам необходимо выполнить итерацию для преобразования в ваш объект.
(Вы можете получить имена полей (ColumnIndexNames) в Объект запроса в режиме отладки. Пожалуйста, дайте мне знать, если можно получить результаты непосредственно в форме списка)
, итерируйте dataList и преобразуйте в список объектов MyClass.
List<MyClass> myClassObjectList = new ArrayList<>();
dataList.forEach( (data) -> {
MyClass myClassObject= new MyClass();
myClassObject.setField1(Integer.parseInt(slsTOData[0].toString()));
// code goes on for conversion logic
}