【问题标题】:procedure call not working from java call程序调用不能从 java 调用中工作
【发布时间】:2017-09-26 12:49:45
【问题描述】:

我创建了一个更新数据库中的表行并在更新后返回特定字符串(例如“完成”)的过程,如果值未更新(例如“失败”),它将返回不同的响应。

从 MySQL 工具调用时,它会更新表并返回值作为响应

call LoginCheck('9111111114','AGGR001002','11d3ad9315b7be5dd53b31a273b3b3aba5defe700808305aa16a3062b76658a791','DIST001007');

但是,当我从 Java 代码调用相同的过程时,它会返回正确的响应,即“完成”,但是当我检查表格时,它似乎没有更新相应的表格行。

factory = DBUtil.getSessionFactory();
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
String status = "7000";
List objectList = null;    
SQLQuery query = session.createSQLQuery("call LoginCheck(:userid,:AggId,:Password,:id)");   
    query.setString("userid", userid);
    query.setString("AggId", AggId);
    query.setString("Password", Password);
    query.setString("id", id);

    objectList = query.list();

我已经尝试过query.setParameterquery.ExecuteUpdate()

如果我还有其他需要,请告诉我。

【问题讨论】:

  • 您是否在程序配置中检查了 MySQL 数据源的自动提交设置?过程返回正确的值,但数据库没有更新,这表明事务没有提交。

标签: java mysql sql hibernate stored-procedures


【解决方案1】:

您似乎已开始交易但尚未提交。所以尝试提交它。

事务事务 = session.beginTransaction();

transaction.commit()

【讨论】:

  • 谢谢@EvgenyTanhilevich 和@Tejal:D
猜你喜欢
  • 2015-08-06
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多