2016-05-07 10 views
0

私は行を返すプロシージャを持っています。
各行はそうように、文字列で一つの列、..私は春のデータを使用してこの手順を起動するSpringデータプロシージャの呼び出し

create procedure myproc(IN var1 varchar(255), IN var2 varchar(255)) 
begin 
    select col3 from table1 where col1 = var1 and col2 = val2; 
end; 
/

を有しています。

ザ・春データマニュアルが言う、私はそうのよう@Procedure
でアノテートされたリポジトリ内のメソッドからこの手順
を呼び出すことができます。..

@Procedure(procedureName = "myproc") 
List<String> myproc(String val1, String val2); 

私の質問はどのようにすべきです。..それはこのようにする必要がありアノテーション付きメソッドが含まれていますリポジトリクラス、

として宣言すること。..

class MyRepository extends JpaRepository<T,ID>{ 
} 

そうなら、私は必ずしもそう、
この場合にはIDに適したタイプのものです場合
の上にTを置き換えるために、エンティティクラスをどのようなタイプのパラメータ私はTに使用すると、ID
を作成する必要があり、このエンティティを保持するためにデータベースにテーブルを作成する必要がありますか?

答えて

0

スプリングデータjpaは'domain driven design'に従います。 ドメインを渡すことが必須であると思います。 あなたのドメインは、あなたのリポジトリが

あなたが Personidフィールドのデータ型を渡す必要が
  • T
  • としてあなたのドメインクラスを渡す必要があり
    public interface PersonRepository extends JpaRepository<Person, Long> { 
    
        @Procedure(procedureName = "myproc") 
        List<String> myproc(String val1, String val2); 
    
    } 
    
    1. 以下のようにする必要があり

      @Entity 
      public class Person { 
      
          @Id 
          @GeneratedValue 
          private Long id; 
          .... getter setter... 
      
      } 
      

      のようなものですクラスはIDとして、この場合はLong
    です

    詳細を参照https://dzone.com/articles/calling-stored-procedures-from-spring-data-jpa

    関連する問題