如何在使用@NamedStoredProcedureQuery时指定模式名称

时间:2016-01-15 10:22:18

标签: spring-data teradata

我正在尝试使用Spring Annotation @NamedStoredProcedureQuery调用参数较少的存储过程。

技术堆栈是带有Hibernate的Spring Data JPA,数据库是Teradata。

它始终无法说“找不到过程”,因为它试图以

的形式调用
   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 {

}

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

找到解决方案。

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

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

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

}

答案 1 :(得分:1)

这种方法对我有用。

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

将模式名称放在 procedureName 注释属性名称中的数据库过程名称之前。希望它有所帮助。