如何在使用@NamedStoredProcedureQuery 时指定架构名称

How to specify Schema name while using @NamedStoredProcedureQuery

我正在尝试使用 Spring 注释 @NamedStoredProcedureQuery 调用无参数存储过程。

技术堆栈是 Spring Data JPA with Hibernate,数据库是 Teradata。

它总是说 "Procedure not found" 失败,因为它试图调用

   call proc_name()

这注定会失败。

但是调用存储过程的正确方法是

call schemaName.proc_name()

我想不出在我创建的实体中指定架构名称的方法。

@NamedStoredProcedureQuery(
        name="proc_name",
        procedureName="proc_name",
        resultClasses = { Sc_Refresh.class }
)

@Entity
@Table(schema = "Schema_Name", name = "TEMP_TABLE" )
public class Sc_Refresh {

}

有人可以帮忙吗?

找到解决方案。

在我们使用@Procedure 注释的Repo 层中,我们应该为过程提供完全限定的名称。例如,

@Repository
public interface Repo  extends JpaRepository<Entity, Long>{

    @Procedure("SCHEMA_NAME.PROC_NAME")
    void explicitlyNamedProcName();

}

这种方法对我有用。

@NamedStoredProcedureQuery(
        name="procName",
        procedureName="<schema_name>.proc_name"
)
@Entity
@Table
public class User {
...
}

procedureName 注释属性名称中将架构名称放在数据库过程名称之前。希望对你有帮助。