如何在JPA存储库外部定义存储过程

时间:2018-06-28 11:28:24

标签: java spring-boot jpa spring-data-jpa repository

我有一些存储过程可以从多个实体中选择数据,所以我应该在哪里定义它们,因为它们没有从单个存储库中获取数据? 我已经定义了特定的存储过程,这些存储过程严格是从像这样的实体类中的单个表中获取数据

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

1 个答案:

答案 0 :(得分:0)

如果没有有关您的应用程序和SP的更多信息,实际上是不可能说出来的。 但是这里有一些准则:

考虑SP的功能。它关注的主要领域概念是什么?

这不必是一个实体,也许您在Java代码中不需要这样的实体,也许您需要它并且还没有意识到。

我看到这种情况的一个典型示例是报告或导出。尽管它们通常与JPA实体不匹配,但它们也是域对象。

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