Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我不能使用hibernate和SQLServer2008调用java中的存储过程_Java_Sql Server_Hibernate_Stored Procedures - Fatal编程技术网

我不能使用hibernate和SQLServer2008调用java中的存储过程

我不能使用hibernate和SQLServer2008调用java中的存储过程,java,sql-server,hibernate,stored-procedures,Java,Sql Server,Hibernate,Stored Procedures,可能重复: 我有以下问题: 我不能用java调用存储过程 我所做的是: 创建一个实现可序列化semaforoBO调用的类,并添加以下内容 @Entity @NamedNativeQuery( name="CalculoSemaforo", query = "exec CalculoSemaforo codigo,fecha", callable=true, resultClass=char.class ) public class SemaforoBO implements Serializa

可能重复:

我有以下问题: 我不能用java调用存储过程

我所做的是:

创建一个实现可序列化semaforoBO调用的类,并添加以下内容

@Entity
@NamedNativeQuery(
name="CalculoSemaforo",
query = "exec CalculoSemaforo codigo,fecha",
callable=true,
resultClass=char.class
)
public class SemaforoBO implements Serializable{
//code
}
存储过程的名称是CalculoSemaforo,有两个返回字符的输入变量。 然后在SemaforoBO中有一个函数执行以下操作:

public char semaforo(){
        DBTenant dbTenant = new DBTenant();
        Session sess;
        try {
            sess = dbTenant.getTenantSession();
            Query query =sess.getNamedQuery("CalculoSemaforo");
            query.setString("codigo", this.codigoarticulo);
            query.setLong("fecha",this.fecha);
            sem = (Character) query.uniqueResult();
        }
        catch(NullPointerException e)
        {
            sem = 'x';
        }
        return sem;
}
但它给了我一个excepcion org.hibernate.MappingException:命名查询未知:CalculoSemaforo


知道这个解决方案是如何感谢的吗?

我找到了一种替代方法,可以使用hibernate而不使用map调用存储过程,或者必须依赖类来调用

DBTenant dbTenant = new DBTenant();
        Session sess;
        try {
            sess = dbTenant.getTenantSession();
            Query qry = sess.createSQLQuery("{ call Iturria.dbo.CalculoSemaforo2(?,?) }");
            qry.setString(0, this.codigoarticulo);
            qry.setLong(1, this.fecha);
            sem = (Character) qry.uniqueResult();
        }
        catch(NullPointerException e)
        {
            sem = 'y';
            return sem;
        }
感谢您的回复

这里也有类似的话题。它可以给你一个答案。