#java #sql #spring #oracle #hibernate
#java #sql #spring #Oracle #режим гибернации
Вопрос:
На днях я столкнулся с проблемой с Hibernate, Spring и Oracle: как я могу вызвать хранимую функцию, которая возвращает пользовательский тип (объект Oracle) с помощью Hibernate.
Я начал думать, что создам объект, который определяет пользовательский тип Oracle, но проблема в том, что у меня нет существующей таблицы для сопоставления только имени функции. Затем я попытался выполнить базовый запрос, но я не знаю, как использовать возвращаемый объект.
Вот мой исходный код :
-- Main function
CREATE OR REPLACE FUNCTION "ECOMMERCE"."NOMBRECOMMANDESPERIODE" (v_dateDebut DATE, v_dateFin DATE)
RETURN t_commandes_periode
IS
v_nombre_commandes NUMBER;
v_nombre_commandes_non_livrees NUMBER;
v_nombre_commandes_impayees NUMBER;
BEGIN
SELECT COALESCE(COUNT(c.id), 0)
INTO v_nombre_commandes
FROM Commande c
WHERE c."date" >= v_dateDebut
AND c."date" <= v_dateFin;
v_nombre_commandes_non_livrees := commandesNonLivrees(v_dateDebut, v_dateFin).COUNT;
v_nombre_commandes_impayees := commandesImpayees(v_dateDebut, v_dateFin).COUNT;
RETURN t_commandes_periode(v_nombre_commandes, v_nombre_commandes_non_livrees, v_nombre_commandes_impayees);
END;
/
-- The returned type
CREATE OR REPLACE TYPE "ECOMMERCE"."T_COMMANDES_PERIODE" AS OBJECT (
nombreTotal NUMBER,
nombreNonLivrees NUMBER,
nombreImpayees NUMBER
);
/
Как я могу вызвать эту функцию с помощью режима гибернации, чтобы иметь возможность работать с объектом Java, который отражает T_COMMANDES_PERIODE
пользовательский тип?
Я благодарю всех, кто попытается помочь мне с этой моей проблемой :).
Комментарии:
1. вам удалось найти решение?
2. Я отказался от этого, это было неудобно…
3. Спасибо, Винсент, за ваш ответ! Я также отхожу от этого, собираюсь использовать поддержку хранимых процедур в JPA 2.1 Хранимые процедуры JPA 2.1