我正在尝试使用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 {
}
有人可以帮忙吗?
答案 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 注释属性名称中的数据库过程名称之前。希望它有所帮助。