hibernate3.1调用存储过程有问题。急...急...
color=#FF0000]这个问题已经困扰我很久了,这是我前段时间发的贴,到现在还没有的到好的解决方案,麻烦大家帮我解决下。谢谢,[/color]
前贴: http://topic.csdn.net/u/20080219/09/392dc641-12c4-4426-ba89-841bcc09e05f.html?seed=2134387670
经过这几天我在网络上找的解决方案,目前是报这样的错误。错误信息如下:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: could not execute query
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
org.hibernate.exception.GenericJDBCException: could not execute query
org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.loader.Loader.doList(Loader.java:1596)
org.hibernate.loader.Loader.list(Loader.java:1577)
org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:112)
org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1414)
org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:153)
com.ssh.hbm.UserInfoDAO.select_User(UserInfoDAO.java:43)
com.ssh.struts.action.UserInfoAction.execute(UserInfoAction.java:42)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
com.microsoft.sqlserver.jdbc.SQLServerException: 没有为参数号 2 设置值。
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.buildParamTypeDefinitions(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.buildPreparedStrings(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doPrepExec(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source)
com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(Unknown Source)
org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:168)
org.hibernate.dialect.SybaseDialect.getResultSet(SybaseDialect.java:142)
org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:127)
org.hibernate.loader.Loader.getResultSet(Loader.java:1269)
org.hibernate.loader.Loader.doQuery(Loader.java:391)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
org.hibernate.loader.Loader.doList(Loader.java:1593)
org.hibernate.loader.Loader.list(Loader.java:1577)
org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:112)
org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1414)
org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:153)
com.ssh.hbm.UserInfoDAO.select_User(UserInfoDAO.java:43)
com.ssh.struts.action.UserInfoAction.execute(UserInfoAction.java:42)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.26 logs.
说下我的项目,ajax+struts1.2+spring1.2+hibernate3.1,数据库是sql server2000,容器tomcat5.5、jdk1.5
因为这是做测试存储的过程,有些地方方法我就没有写太完整,关于调用存储的代码我都贴出来。
这是我UserInfoAction.java中调用的其中一个方法,
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub System.out.println("userInfoAction "); userinfodao.select();//这方法是没有问题,是做一般的查询的,代码会在下面贴出来 System.out.println("----------------"); //这里就是UserInfoAction.java中的42行,是掉用存储的相关方法。这里出错。 userinfodao.select_User(); return null; }//这个方法是做一般查询的方法,用做测试这个项目架构的,这个方法调用没有,说明正框架结合也是没有问题的。 public Collection select(){ Collection c=null; c=this.getSession().createQuery("From UserInfo").list(); Iterator i=c.iterator(); while(i.hasNext()){ UserInfo user=(UserInfo)i.next(); System.out.println(user.getUserName()); } return c; } //这个是掉用存储过程的的方法。 public void select_User(){ List list=null; //在这个地方出错。也就UserInfoDAO.java类中的43行 list=this.getSession().getNamedQuery("getUserInfo").setString(0, "a").list(); Iterator i=list.iterator(); while(i.hasNext()){ UserInfo user=(UserInfo)i.next(); System.out.println(user.getUserName()); } }<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Mapping file autogenerated by MyEclipse - Hibernate Tools--><hibernate-mapping> <class name="com.ssh.hbm.UserInfo" table="userInfo" schema="dbo" catalog="Mydata"> <id name="userId" type="java.lang.Integer"> <column name="userId" /> <generator class="identity" /> </id> <property name="userName" type="java.lang.String"> <column name="userName" length="30" /> </property> <property name="address" type="java.lang.String"> <column name="address" length="100" /> </property> </class><!-- 下面是存储的相关配置--!> <sql-query name="getUserInfo" callable="true"> <return alias="UserInfo" class="com.ssh.hbm.UserInfo"> <return-property name="userId" column="userId"/> <return-property name="userName" column="userName"/> <return-property name="address" column="address"/> </return> {?=call getUserInfo(?)} </sql-query></hibernate-mapping>
<sql-query name="getUserInfo" callable="true"> <return alias="UserInfo" class="com.ssh.hbm.UserInfo"> <return-property name="userId" column="userId"/> <return-property name="userName" column="userName"/> <return-property name="address" column="address"/> </return> {call getUserInfo(?)} </sql-query>
我的异常网推荐解决方案:The server encountered an internal error () that prevented it from fulfilling this request.,http://www.myexception.cn/java-web/317.html