#spring-boot #jpa #spring-data-jpa #spring-data #spring-jdbc
Вопрос:
Я следую этому руководству по вызову моей хранимой процедуры. Я поискал другие ресурсы для примера, где параметры ВХОДА и выхода имеют тип таблицы, но не смог найти ни одного.
У меня возникла ошибка: Cannot convert SQL type TABLE to Java type java.lang.Object
Комментарии:
1. Можете ли вы опубликовать, что вы пробовали, а что не работает, вместо указания ссылки на учебник
Ответ №1:
Нет никаких способов узнать, что именно вызвало проблему. Но я привожу пример сохраненной функции, которая действительно работала для меня. Хранимые функции могут быть альтернативным подходом к хранимым процедурам, которые должны возвращать DTO.
@Repository
public interface CustomRepository extends CrudRepository<YourObject, UUID> {
@Query(value = "SELECT * from your_stored_procedure(:key)", nativeQuery = true)
List<YourObject> findAlldata(@Param("key") String key);
}
@Service
public class CustomService {
@Autowired
private CustomRepository customRepository;
public List<YourObject> getAllData(String key) {
List<YourObject> yourObjects = this.customRepository.findAlldata(key);
}
}
А вот код для сохраненной функции в Postgres. return
Объекты должны иметь одинаковую структуру как для repository
того, так и procedure
для другого .
CREATE FUNCTION public.your_stored_procedure(key text) RETURNS TABLE(id uuid, name character varying)
LANGUAGE plpgsql
AS $
BEGIN
RETURN QUERY SELECT
id,
name
FROM public.your_table;
END;
$;