在运行时分配NamedStoredProcedureQuery

时间:2019-06-25 21:02:07

标签: spring-boot jpa stored-procedures spring-data-jpa

我有一些需要调用才能执行该操作的存储过程。但是,对于每个操作,我都将存储过程的名称保存到数据库中。因此,在运行时,我将基于操作名称调用分配存储过程。

问题: 1.如何在运行时设置NamedStoredProcedureQuery的名称?

我在Spring Boot中使用Spring JPA。

@NamedStoredProcedureQueries({
        @NamedStoredProcedureQuery(
                name = "sptest",
                procedureName = "usp_helper_test",
                resultClasses = {Config.class},
                parameters = {
                        @StoredProcedureParameter(
                                name = "data",
                                type = String.class,
                                mode = ParameterMode.IN)
                })
})

在上面的示例中,我想在运行时设置 procedureName

1 个答案:

答案 0 :(得分:1)

如果我们忽略字节码生成之类的东西:不能。 命名存储过程从您在问题中显示的注释中获取名称。

当然,您仍然可以使用EntityManager或JDBC(可能通过JdbcTemplate)通过存储过程在数据库中的名称来调用它们。

使用EntityManager,您可以在其中一种变体中调用EntityManager.createStoredProcedureQuery

对于JdbcTemplate方法,您可以咨询this SO answer

您需要编写的代码将放在custom method implementation中。