2017-08-24 12 views
1

永続性のためにSpringBoot + Spring Data JPAを使用する単純なアプリケーションを実行しています。Spring Data JPA Oracle関数呼び出し

以下は、サービス実装クラスで返される値を持つサンプルのOracle関数です。

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

あなたは、カスタムの方言を作成して、必要な機能を登録することができJPAプロバイダとしてHibernateを使用している場合は。

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")); 
    } 
} 
関連する問題