Spring Data过程调用

时间:2016-05-07 08:08:55

标签: stored-procedures spring-data

我有一个返回行的程序 每行都有一列,这是一个字符串,就像这样..

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

我想使用Spring Data调用此过程。

Spring Data手册说,我可以调用这个程序 来自存储库中的方法,该方法使用@Procedure注释 像这样......

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

我的问题是..应该如何包含带注释方法的存储库类,
被宣布为

应该是这样的..

class MyRepository extends JpaRepository<T,ID>{
}

如果是,我应该为T和ID使用什么类型参数 我是否必须创建一个实体类,以取代上面的T 如果是,在这种情况下什么是适合的ID类型
我是否必须在数据库中创建一个表来保存这个实体?

1 个答案:

答案 0 :(得分:0)

Spring数据jpa遵循'domain driven design'。 所以我认为必须通过Domain。 您的域名就像

@Entity
public class Person {

    @Id
    @GeneratedValue
    private Long id;
    .... getter setter...

}

您的存储库应如下所示

public interface PersonRepository extends JpaRepository<Person, Long> {

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

}
  1. 您需要将域类作为T
  2. 传递
  3. 您需要将id类的Person字段的数据类型作为ID传递,在这种情况下,它是Long
  4. 有关示例https://dzone.com/articles/calling-stored-procedures-from-spring-data-jpa

    的更多信息