2017-08-24 140 views
1

我正在运行一个使用Spring Boot + Spring Data JPA进行持久化的简单应用程序。Spring Data JPA调用Oracle函数

下面是一个示例Oracle函数我希望在Service实现类中返回值。

CREATE OR REPLACE PACKAGE PKG_TEST AS 
    FUNCTION HELLO_WORLD(TEXT VARCHAR2) RETURN VARCHAR2; 
END PKG_TEST; 

CREATE OR REPLACE PACKAGE BODY PKG_TEST AS 
    FUNCTION HELLO_WORLD(TEXT VARCHAR2) RETURN VARCHAR2 IS 
    BEGIN 
    RETURN 'HELLO WORLD ' || TEXT; 
    END; 
END PKG_TEST; 

无框架做这将是简单的,但项目被内置到春季启动JPA,所以最好使用它。

我需要参考指南链接或简单的基础结构。 我搜索了所有关于SO和Spring Data JPA的参考资料,我发现的所有例子都是针对CRUD和存储过程的,对于函数没有任何用处。

我试图使用为功能修改的存储过程示例,但没有工作。

+0

我不认为这是对SQL功能的支持,有办法叫他们但不能创建并存储为据我所知。 JPA规范没有javadoc这样的合约,我怀疑它是由任何持久化提供者实现的 –

回答

0

如果您正在使用Hibernate作为JPA提供商可以创建自定义的方言和注册所需的功能。

public class CustomDialect extends Oracle10gDialect { 
    public CustomDialect() { 
     super(); 
     // CustomFunction implements SqlFunction 
     registerFunction("custom_function", new CustomFunction()); 
     // or use StandardSQLFunction; useful for coalesce 
     registerFunction("coalesce", new StandardSQLFunction("coalesce")); 
    } 
}