Sql server 如何为hibernate存储过程设置架构

Sql server 如何为hibernate存储过程设置架构,sql-server,hibernate,database-schema,procedure,Sql Server,Hibernate,Database Schema,Procedure,我刚刚开始使用SQL Server数据库的Hibernate存储过程,虽然我已经学习了本文中的示例,但是我得到一个错误,表明DBMS不仅需要存储过程名称,还需要模式 这是我的存储过程 CREATE PROCEDURE [Tafdb].[GetEnvironments] AS BEGIN SET NOCOUNT ON; SELECT id, name, description FROM [Tafdb].[Environments] END 我的休眠定义 <sql-quer

我刚刚开始使用SQL Server数据库的Hibernate存储过程,虽然我已经学习了本文中的示例,但是我得到一个错误,表明DBMS不仅需要存储过程名称,还需要模式

这是我的存储过程

CREATE PROCEDURE [Tafdb].[GetEnvironments] 
AS BEGIN
SET NOCOUNT ON;

SELECT id, name, description
   FROM [Tafdb].[Environments]    
END
我的休眠定义

<sql-query name="EnvironmentBean.GET_LIST" callable="true">
    <return alias="environmentBean"
        class="au.com.somepackage.beans.env.EnvironmentBean" />
    {Call GetEnvironments}
</sql-query>
当我将Call语句更改为Tafdb.GetEnvironments时,它工作得非常好。不幸的是,如果我在客户机站点上创建数据库,它们可能有一个所有者,例如TafUser,在这种情况下,Call语句必须具有该模式名称

是否有人能帮助我正确命名存储过程,以便它在执行时可用于任何模式名称?如果我不定义模式,它默认为dbo,我也不能这样做


提前感谢。

在sql server中,如果模式不是
dbo
,并且目标模式不是调用方的默认模式,那么您必须明确提到
[schema].[object\u name]
。好的,解决了一个问题,给了我另一个问题。我将数据库所有者更改为sa,并将默认用户和模式更改为所需的值。我不希望sa成为数据库所有者。我的用户现在无权访问数据库中的任何表。现在如何将数据库所有者更改为默认用户值?
List<EnvironmentBean> list = session.getNamedQuery(
"EnvironmentBean.GET_LIST").list();
**Could not find stored procedure 'GetEnvironments'**