【问题标题】:How to define Stored Procedure outside JPA Repository如何在 JPA 存储库之外定义存储过程
【发布时间】:2018-12-07 11:18:52
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 感谢您回答 Jens,是的,此 SP 获取的数据是用于报告的,我刚刚创建了一个简单的类,如您所说,它使用 JDBCTemplate,并且运行良好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2022-10-13
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2021-05-11
    相关资源
    最近更新 更多