gpt4 book ai didi

java - 我无法使用 hibernate 和 sql-server 2008 在 java 中调用存储过程

转载 作者:行者123 更新时间:2023-12-01 15:08:36 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com