如何在 JPA Repository 之外定义存储过程

How to define Stored Procedure outside JPA Repository

我有一些存储过程 select 来自多个实体的数据,所以我应该在哪里定义它们,因为它们不是从单个存储库获取数据? 我已经定义了特定的存储过程,这些存储过程严格地从实体 类 中的单个 table 获取数据,就像这样

   @Entity
   @Table(name = "accounts", schema = "ma_db")
   @NamedStoredProcedureQueries({
            @NamedStoredProcedureQuery(name="getAccountsList", procedureName = "GET_ACCOUNT", parameters = {
                    @StoredProcedureParameter(mode = ParameterMode.IN, name = "UserId", type = String.class)
            } )

如果没有关于您的应用程序和相关 SP 的更多信息,真的无法判断。 但这里有一些准则:

想想SP在做什么。它关注的主要领域概念是什么?

这不一定是一个实体,也许你的java代码中不需要这样的实体,也许你需要它但还没有意识到。

我见过这种情况的一个典型例子是报表或导出。这些也是域对象,尽管它们通常与 JPA 实体不匹配。

如果确实没有匹配的实体与 SP 相关联,也许正确的做法是创建一个简单的 class,使用 JdbcTemplate 执行 SP。