【问题标题】:How to run a (insert) stored procedure without a entity class?如何在没有实体类的情况下运行(插入)存储过程?
【发布时间】:2020-02-17 13:17:34
【问题描述】:

我正在为我的 Spring Boot 应用程序编写一些代码,并且我正在尝试合并一个存储过程。但是,我正在尝试找到一种无需实体类即可运行插入存储过程的方法。我之前尝试过一些方法,但我不断收到java.lang.IllegalArgumentException: No @NamedStoredProcedureQuery was found with that name : InsertGPIP 之类的错误,但我知道这是因为没有与之关联的实体。

Java:

    public void insertToGPIP(){

            StoredProcedureQuery query = entityManager.createNamedStoredProcedureQuery("InsertGPIP")
            .registerStoredProcedureParameter("appcode", String.class, ParameterMode.IN)
            .registerStoredProcedureParameter("guid", String.class, ParameterMode.IN)
            .registerStoredProcedureParameter("name", String.class, ParameterMode.IN)
            .registerStoredProcedureParameter("statuscode", String.class, ParameterMode.IN)
            .registerStoredProcedureParameter("assist", String.class, ParameterMode.IN)
            .registerStoredProcedureParameter("adid", String.class, ParameterMode.IN)
            .setParameter("appcode", "Rob")
            .setParameter("guid", "F38FJ47")
            .setParameter("name", "A Test")
            .setParameter("statuscode", "02")
            .setParameter("assist", "N")
            .setParameter("adid", "MyId");
            query.execute();

        }

【问题讨论】:

  • entityManager 是什么东西?
  • @TheImpaler @PersistenceContext private EntityManager entityManager;
  • @TheImpaler 它运行存储过程。

标签: java sql spring-boot jpa


【解决方案1】:

来自 NamedStoreProcedureQuery javadoc(粗体是我的):

NamedStoredProcedureQuery 注解可以应用于实体 或映射的超类

映射的超类没有为其定义表,仅提供映射信息以供扩展它的实体继承。

因此,您可以将一个空的抽象映射超类 (@MappedSuperclass) 作为 NamedStoredProcedureQuery 注释的容器。

【讨论】:

  • 嗨@kane_004。如果这解决了您的问题,请考虑通过单击复选标记接受它。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
相关资源
最近更新 更多