前几天我遇到了Hibernate,Spring和Oracle的问题:如何调用一个使用Hibernate返回用户定义类型(Oracle对象)的存储函数。
我开始认为我构建了一个定义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
);
/
如何使用Hibernate调用该函数,以便能够使用反映T_COMMANDES_PERIODE
用户定义类型的Java对象?
我感谢任何帮我解决这个问题的人:)。