我不能使用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;
}
感谢您的回复这里也有类似的话题。它可以给你一个答案。