【问题标题】:Spring data repository - common method for all repositoriesSpring数据仓库——所有仓库的通用方法
【发布时间】:2021-11-08 03:28:32
【问题描述】:

我正在使用带有 Reactive 存储库的 Spring boot 2 来执行将返回计数的存储过程。我有 30 个存储过程,它们都只会返回一个数字并且不带任何参数。

因此为存储过程 StroedProcDomain.java 和一个示例存储库创建了一个模型,如下所示。

@Repository
public interface JobRepository extends ReactiveCrudRepository<StroedProcDomain, Long> {

    @Query("CALL JOB_LOAD()")
    Mono<Integer> executeProc();

}

需要创建 30 个这样的存储库,并希望强制所有存储库使用相同的方法

单声道 executeProc()

但存储的过程名称会有所不同。所以@Query 对于每个存储库都会有所不同。

实现这一目标的最佳方法是什么?

目前,我有 30 个存储库。希望有一个基础存储库以强制方法名称。

【问题讨论】:

  • 我认为这不可能强制接口上的方法名称。要拥有一个基础存储库,您可以定义一个接口并在其上使用 @NoRepositoryBean 然后扩展它,但这意味着必须将 Query 注释放在基础接口方法上。 stackoverflow.com/questions/11576831/…
  • 是否可以通过参数传递查询并且在基类中只有一个方法?

标签: spring-boot spring-data-jpa spring-data spring-data-r2dbc


【解决方案1】:

理论上,您可以在一个公共接口上放置两个方法:您的实际查询方法,这将通过调用存储过程的custom method 来实现,加上一个仅提供存储过程名称的方法。

但这将是相当多的代码和更复杂的代码,而不仅仅是每个存储库上的一个带注释的查询方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    相关资源
    最近更新 更多