java - 如何在 JPA 存储库之外定义存储过程

标签 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)
            } )

最佳答案

如果没有有关您的应用程序和相关 SP 的更多信息,确实无法判断。 但这里有一些指导原则:

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

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

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

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

关于java - 如何在 JPA 存储库之外定义存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51081789/

相关文章:

JAVA将readFile中的整数分配给二维数组

java - ArrayAdapter 不更新动态数据

java - 如何将 @Query 保留在属性文件中并在 JPA 中访问这些查询

java - 使用 Spring Boot 与 Kotlin 和 Java 有什么区别?

java - 无法执行“ALTER TABLE”,因为表不存在

java - 提取公共(public)列(审核字段)[Java][JPA]

java - 从 jpa 捕获 ConstraintViolationException 给出约束名称 null 值

java - 关于在 Jersey 中使用response.seeother的澄清

java - RPN 表达式 java 中元素之间的空格

Spring Boot,Cron作业同步