我正在尝试使用此存储过程获取数据:
create procedure Proc_Member_Statement @Counter int,@TransDate datetime
as
declare @schemeNo int,@MemberNo int
select @schemeNo = SchemeNo,@MemberNo = MemberNo from Members where Counter = @Counter
exec Individualize @schemeNo,@MemberNo,@TransDate,0,0
exec RepMemberCertificate_DBN_One @schemeNo,@MemberNo,@TransDate,0
我的模特课:
@NamedStoredProcedureQueries(
{
@NamedStoredProcedureQuery(
name = "getMemberStatement",
procedureName = "Proc_Member_Statement",
resultClasses = AccountStatement.class,
parameters = {
@StoredProcedureParameter(
name = "Counter",
mode = ParameterMode.IN,
type = Long.class
),
@StoredProcedureParameter(
name = "TransDate",
mode = ParameterMode.IN,
type = Date.class
)
}
),
}
)
@Entity
public class AccountStatement implements Serializable {
@Id
BigDecimal EmpOpBal;
public BigDecimal getEmpOpBal() {
return EmpOpBal;
}
public void setEmpOpBal(BigDecimal empOpBal) {
EmpOpBal = empOpBal;
}
public BigDecimal getEmprOpBal() {
return EmprOpBal;
}
public void setEmprOpBal(BigDecimal emprOpBal) {
EmprOpBal = emprOpBal;
}
public BigDecimal getEmpCont() {
return EmpCont;
}
public void setEmpCont(BigDecimal empCont) {
EmpCont = empCont;
}
public BigDecimal getEmprCont() {
return EmprCont;
}
public void setEmprCont(BigDecimal emprCont) {
EmprCont = emprCont;
}
public BigDecimal getEmpVolCont() {
return EmpVolCont;
}
public void setEmpVolCont(BigDecimal empVolCont) {
EmpVolCont = empVolCont;
}
public BigDecimal getEmprVolCont() {
return EmprVolCont;
}
public void setEmprVolCont(BigDecimal emprVolCont) {
EmprVolCont = emprVolCont;
}
public BigDecimal getEmpInt() {
return EmpInt;
}
public void setEmpInt(BigDecimal empInt) {
EmpInt = empInt;
}
public BigDecimal getEmprInt() {
return EmprInt;
}
public void setEmprInt(BigDecimal emprInt) {
EmprInt = emprInt;
}
public BigDecimal getClosingBal() {
return ClosingBal;
}
public void setClosingBal(BigDecimal closingBal) {
ClosingBal = closingBal;
}
public BigDecimal getEmpCBal() {
return EmpCBal;
}
public void setEmpCBal(BigDecimal empCBal) {
EmpCBal = empCBal;
}
public BigDecimal getEmprCBal() {
return EmprCBal;
}
public void setEmprCBal(BigDecimal emprCBal) {
EmprCBal = emprCBal;
}
@Id
BigDecimal EmprOpBal; // Employer Opening Balance
@Id
BigDecimal EmpCont; //Reg Employee
@Id
BigDecimal EmprCont; //Reg Employer
@Id
BigDecimal EmpVolCont; //Employee AVC
@Id
BigDecimal EmprVolCont; //Employer AVC
@Id
BigDecimal EmpInt; //Employee Interest
@Id
BigDecimal EmprInt; //Employer Interest
@Id
BigDecimal ClosingBal; //Closing Balance (Total)
@Id
BigDecimal EmpCBal; // Employee Closing Balance
@Id
BigDecimal EmprCBal; // Employer Closing Balance
}
现在,当我尝试运行存储过程以便从数据库中获取值时,我不断收到此错误:
[java.lang.IllegalStateException:当前CallableStatement ou不是ResultSet,但调用了getResultList]
这是bean类:
public List<AccountStatement> getOpeningBalances(long memberId, Date date) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -3);
jLogger.i("Calender >>>>> " + cal.getTime());
StoredProcedureQuery query = this.entityManager.createNamedStoredProcedureQuery("getMemberStatement");
query.setParameter("Counter", memberId);
query.setParameter("TransDate", cal.getTime());
query.execute();
try {
jLogger.i("Returned result >>>>>>>>>> " + query.getResultList());
List<AccountStatement> openingBalances = query.getResultList();
return openingBalances;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
我做错了什么?
编辑: 以下是我在Microsoft SQL Server Management Studio中运行存储过程时输出的一部分:
我打算使用系统中某些列的数据。 感谢。
答案 0 :(得分:0)
我还不清楚你期望的结果集来自哪里,我怀疑是在Proc_Member_Statement中调用的一个存储过程。
为了从Proc_Member_Statement中获取结果,您需要将存储过程中的结果集插入到临时表中,然后在Proc_Member_Statement结束时从中选择行。