Possible Duplicate:
Calling a Stored Procedure in Hibernate
我有以下问题: 我无法在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;
}
但它给了我一个异常(exception) org.hibernate.MappingException: 命名查询未知:CalculoSemaforo
知道这个解决方案如何谢谢
最佳答案
我找到了一种使用 hibernate 调用存储过程而不使用映射的替代方法,否则您必须依赖一个类来调用
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;
}
感谢回复
关于java - 我无法使用 hibernate 和 sql-server 2008 在 java 中调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12625985/