调用Oracle存储函数,该函数返回带有Hibernate的用户定义类型

时间:2014-06-18 07:40:52

标签: java sql spring oracle hibernate

前几天我遇到了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对象?

我感谢任何帮我解决这个问题的人:)。

0 个答案:

没有答案