请问hibernate中怎么获取存储过程返回的值? int returnValue = st.getInt(1); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我调用存储过程和你的方法不一样,Sorry,我的代码帖出来给你,用的是Hibernate3.05实际上我这个方法是用的JDBC的方法调用的=============================================================package com.dc.tirip.dis.configuration.dao;import java.sql.CallableStatement;import java.sql.SQLException;import java.sql.Types;import com.dc.tirip.common.framework.dbconfig.HibernateUtil;import com.dc.tirip.common.logging.ILogger;public class DisServiceConfigDao { /** * 日志记录 */ private static ILogger log = ILogger.Factory.getLogger(DisServiceConfigDao.class); /** * 获取服务配置,注意参数顺序 * * @param channelId * 渠道标识 * @param serviceId * 服务标识 * @param platformId * 平台标识 * @param channelType * 渠道类型 * @param nsrsbh * 纳税人识别号 * @return */ public static DisServiceConfig getDisServiceConfig(String channelId, String serviceId, String platformId, String channelType, String nsrsbh) { DisServiceConfig serviceConfig = new DisServiceConfig(); serviceConfig.setChannelId(channelId); serviceConfig.setServiceId(serviceId); serviceConfig.setPlatformId(platformId); serviceConfig.setChannelType(channelType); serviceConfig.setNsrsbh(nsrsbh); int returnCode = 101; CallableStatement cstmt = null; try { // 取得Hibernate数据库连接 java.sql.Connection conn = HibernateUtil.currentSession().connection(); // 准备存储过程 cstmt = conn.prepareCall( "begin :1 := P_XT_GET_SERVICE_CONFIG(:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14); end;");// "{ ?=call P_XT_GET_SERVICE_CONFIG(?,?,?,?,?,?,?,?,?,?,?,?,?) }"); cstmt.registerOutParameter(1, Types.INTEGER); cstmt.registerOutParameter(7, Types.VARCHAR); cstmt.registerOutParameter(8, Types.VARCHAR); cstmt.registerOutParameter(9, Types.VARCHAR); cstmt.registerOutParameter(10, Types.VARCHAR); cstmt.registerOutParameter(11, Types.VARCHAR); cstmt.registerOutParameter(12, Types.VARCHAR); cstmt.registerOutParameter(13, Types.VARCHAR); cstmt.registerOutParameter(14, Types.INTEGER); cstmt.setString(2, channelId); cstmt.setString(3, serviceId); cstmt.setString(4, platformId); cstmt.setString(5, channelType); cstmt.setString(6, nsrsbh); // 执行存储过程 cstmt.execute(); // 取得输出参数 returnCode = cstmt.getInt(1); serviceConfig.setIsTransform(cstmt.getString(7)); serviceConfig.setIsVerifyDataLogic(cstmt.getString(8)); serviceConfig.setIsVerifyDataSemantic(cstmt.getString(9)); serviceConfig.setIsVerifyDataCRC(cstmt.getString(10)); serviceConfig.setZipType(cstmt.getString(11)); serviceConfig.setEncryptType(cstmt.getString(12)); serviceConfig.setCodeType(cstmt.getString(13)); serviceConfig.setTransactPriority(new Integer(cstmt.getInt(14))); } catch (SQLException e) { log.warn("调用存储过程出错,无法获得配置:", e); } finally { if(cstmt != null) { try { cstmt.close(); } catch(SQLException e) { log.warn("调用存储过程出错,无法获得配置:", e); } cstmt = null; } } // 设置执行结果 serviceConfig.setReturnCode(returnCode); if (log.isDebugEnabled()) { log.debug(serviceConfig.toString()); } return serviceConfig; } public static void main(String[] s) { String channelId = "S110"; String serviceId = "0";// "SBTY31"; String platformId = "0S00"; String channelType = "J"; String nsrsbh = "0"; DisServiceConfig businessConfig = getDisServiceConfig(channelId, serviceId, platformId, channelType, nsrsbh); log.debug("businessConfig=" + businessConfig.toString()); }} 关于java日期的处理 AWT出了个小问题 Struts用途问题 我的网站刚开张,请大家多说 JAVA中的日期计算问题 用<logic:iterate> 显示Hashtable 中的内容 ejb 数据库中的内容会随着JBoss的关闭而丢失? [求助]Java检查求解!急! 我已经安装完J2EE SDK 1.40了,可是怎么在系统高级里设置环境变量啊? 各位,如何使用事务处理在java可。郁闷中,顺便散分,跟者有分 Hibrenate的Mapping在Eclipse3.1 Help Me
实际上我这个方法是用的JDBC的方法调用的=============================================================
package com.dc.tirip.dis.configuration.dao;import java.sql.CallableStatement;
import java.sql.SQLException;
import java.sql.Types;import com.dc.tirip.common.framework.dbconfig.HibernateUtil;
import com.dc.tirip.common.logging.ILogger;public class DisServiceConfigDao {
/**
* 日志记录
*/
private static ILogger log = ILogger.Factory.getLogger(DisServiceConfigDao.class); /**
* 获取服务配置,注意参数顺序
*
* @param channelId
* 渠道标识
* @param serviceId
* 服务标识
* @param platformId
* 平台标识
* @param channelType
* 渠道类型
* @param nsrsbh
* 纳税人识别号
* @return
*/
public static DisServiceConfig getDisServiceConfig(String channelId, String serviceId, String platformId,
String channelType, String nsrsbh) {
DisServiceConfig serviceConfig = new DisServiceConfig();
serviceConfig.setChannelId(channelId);
serviceConfig.setServiceId(serviceId);
serviceConfig.setPlatformId(platformId);
serviceConfig.setChannelType(channelType);
serviceConfig.setNsrsbh(nsrsbh);
int returnCode = 101;
CallableStatement cstmt = null;
try {
// 取得Hibernate数据库连接
java.sql.Connection conn = HibernateUtil.currentSession().connection();
// 准备存储过程
cstmt = conn.prepareCall(
"begin :1 := P_XT_GET_SERVICE_CONFIG(:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14); end;");
// "{ ?=call P_XT_GET_SERVICE_CONFIG(?,?,?,?,?,?,?,?,?,?,?,?,?) }");
cstmt.registerOutParameter(1, Types.INTEGER);
cstmt.registerOutParameter(7, Types.VARCHAR);
cstmt.registerOutParameter(8, Types.VARCHAR);
cstmt.registerOutParameter(9, Types.VARCHAR);
cstmt.registerOutParameter(10, Types.VARCHAR);
cstmt.registerOutParameter(11, Types.VARCHAR);
cstmt.registerOutParameter(12, Types.VARCHAR);
cstmt.registerOutParameter(13, Types.VARCHAR);
cstmt.registerOutParameter(14, Types.INTEGER);
cstmt.setString(2, channelId);
cstmt.setString(3, serviceId);
cstmt.setString(4, platformId);
cstmt.setString(5, channelType);
cstmt.setString(6, nsrsbh); // 执行存储过程
cstmt.execute(); // 取得输出参数
returnCode = cstmt.getInt(1);
serviceConfig.setIsTransform(cstmt.getString(7));
serviceConfig.setIsVerifyDataLogic(cstmt.getString(8));
serviceConfig.setIsVerifyDataSemantic(cstmt.getString(9));
serviceConfig.setIsVerifyDataCRC(cstmt.getString(10));
serviceConfig.setZipType(cstmt.getString(11));
serviceConfig.setEncryptType(cstmt.getString(12));
serviceConfig.setCodeType(cstmt.getString(13));
serviceConfig.setTransactPriority(new Integer(cstmt.getInt(14))); } catch (SQLException e) {
log.warn("调用存储过程出错,无法获得配置:", e);
}
finally
{
if(cstmt != null)
{
try
{
cstmt.close();
}
catch(SQLException e)
{
log.warn("调用存储过程出错,无法获得配置:", e);
}
cstmt = null;
}
}
// 设置执行结果
serviceConfig.setReturnCode(returnCode); if (log.isDebugEnabled()) {
log.debug(serviceConfig.toString());
}
return serviceConfig;
} public static void main(String[] s) {
String channelId = "S110";
String serviceId = "0";// "SBTY31";
String platformId = "0S00";
String channelType = "J";
String nsrsbh = "0"; DisServiceConfig businessConfig = getDisServiceConfig(channelId, serviceId, platformId, channelType, nsrsbh);
log.debug("businessConfig=" + businessConfig.toString());
}
}