Java 使用Hibernate调用返回用户定义类型的Oracle存储函数
前几天,我在Hibernate、Spring和Oracle中遇到了一个问题:如何调用一个存储函数,该函数使用Hibernate返回一个用户定义类型的Oracle对象 我开始考虑我应该构建一个实体来定义Oracle用户类型,但问题是我没有现有的表来映射函数名。然后我尝试进行基本查询,但我不知道如何利用返回的对象 以下是我的源代码:Java 使用Hibernate调用返回用户定义类型的Oracle存储函数,java,sql,spring,oracle,hibernate,Java,Sql,Spring,Oracle,Hibernate,前几天,我在Hibernate、Spring和Oracle中遇到了一个问题:如何调用一个存储函数,该函数使用Hibernate返回一个用户定义类型的Oracle对象 我开始考虑我应该构建一个实体来定义Oracle用户类型,但问题是我没有现有的表来映射函数名。然后我尝试进行基本查询,但我不知道如何利用返回的对象 以下是我的源代码: -- Main function CREATE OR REPLACE FUNCTION "ECOMMERCE"."NOMBRECOMMANDESPERIODE" (v
-- 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对象
我感谢任何试图帮助我解决这个问题的人:。你找到解决方案了吗?我放弃了,太尴尬了……谢谢文森特的回复!我也将不再讨论这个问题,而是在JPA2.1中使用存储过程支持