如何在使用@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 注释属性名称中将架构名称放在数据库过程名称之前。希望对你有帮助。
我正在尝试使用 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 注释属性名称中将架构名称放在数据库过程名称之前。希望对你有帮助。