我有一些需要调用才能执行该操作的存储过程。但是,对于每个操作,我都将存储过程的名称保存到数据库中。因此,在运行时,我将基于操作名称调用分配存储过程。
问题: 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 。
答案 0 :(得分:1)
如果我们忽略字节码生成之类的东西:不能。 命名存储过程从您在问题中显示的注释中获取名称。
当然,您仍然可以使用EntityManager
或JDBC(可能通过JdbcTemplate
)通过存储过程在数据库中的名称来调用它们。
使用EntityManager
,您可以在其中一种变体中调用EntityManager.createStoredProcedureQuery
。
对于JdbcTemplate
方法,您可以咨询this SO answer。
您需要编写的代码将放在custom method implementation中。