【问题标题】:Spring Data procedure invocationSpring Data 过程调用
【发布时间】:2016-05-07 08:08:55
【问题描述】:

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

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 手册说,我可以调用这个过程
来自 Repository 中的方法,使用 @Procedure
注释 就这样。。

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

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

应该是这样..

class MyRepository extends JpaRepository<T,ID>{
}

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

【问题讨论】:

    标签: stored-procedures spring-data


    【解决方案1】:

    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. 您需要将Person 类的id 字段的数据类型作为ID 传递,在这种情况下它是Long

    更多信息,例如https://dzone.com/articles/calling-stored-procedures-from-spring-data-jpa

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 2015-12-26
      • 2015-08-15
      • 2019-05-19
      相关资源
      最近更新 更多