Hibernate 报:Exception executing batch 和 Batch update returned unexpected row count from update: 0 actual row count: 0 expecte

yxxcrtd 2007-04-19 08:19:50
ERROR [http-8080-Processor22] (BatchingBatcher.java:60) - Exception executing batch:
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
at org.hibernate.jdbc.BatchingBatcher.checkRowCount(BatchingBatcher.java:92)
at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:78)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:174)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:137)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:284)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:736)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:330)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
at dao.BaseDAO.mdfObj(BaseDAO.java:72)
at action.CsdjAction.update(CsdjAction.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1192)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:430)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at action.EncodingFilter.doFilter(EncodingFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
...全文
11909 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
dragon08 2010-12-13
  • 打赏
  • 举报
回复
public static void mdfObj(int AutoID,Object obj)
{
Transaction tx = null;
Session session = null;
try
{
session = HibernateUtil.currentSession();
tx = session.beginTransaction();

obj.setAutoID(AutoID);//update前set一下id就可以啦

System.out.println( "==== 开始 update 操作 ==== ");
System.out.println(((Csdj) obj).getAutoID());
session.update(obj);

}
xxlsuperman 2009-09-18
  • 打赏
  • 举报
回复
原因就是 因为你要update 的那一条数据,在数据库中没有找到(根据主键找不到数据)。 就这么简单,没他们说的那么吓人~~!
leehonglim 2008-12-10
  • 打赏
  • 举报
回复
update by id
if(id==0)
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1

else
success
clearskyer 2008-07-10
  • 打赏
  • 举报
回复
这个问题我遇到过,和MYSQL的版本问题什么的没有任何关系,我错误的原因是在从页面向后台传递信息的时候没有将对象的 主键 传递回来造成HIBERNATE无法根据主键对数据进行更新
wddodo 2008-01-15
  • 打赏
  • 举报
回复
粗心大意,我也犯了同样的错误,找了很久终于在本帖找到了答案,谢谢各位了。
telloo7608 2007-11-14
  • 打赏
  • 举报
回复
majkandy 2007-04-22
  • 打赏
  • 举报
回复
太....试试把
<id name="AutoID" column="AutoID" type="java.lang.Integer" unsaved-value="null">
<generator class="native" />
</id>
在update前把你要update的对象加载到session一级缓存管理之内,通过session.load()一下试试,因为你的id有可能是0
「已注销」 2007-04-20
  • 打赏
  • 举报
回复
?
genius_mcx 2007-04-20
  • 打赏
  • 举报
回复
所以我努力让自己不带星星
v38 2007-04-20
  • 打赏
  • 举报
回复
既然本人的贴子成了头条,偶就插播个广告吧:
本人在苏州两年开发经验,熟练使用Hibernate+spring+struts ,英语口语相当流利,因为女朋友在上海工作,打算最近去上海发展,有意者联系:
QQ:8781835
MSN:v38@163.com

版主不要给偶删了啊:)
v38 2007-04-20
  • 打赏
  • 举报
回复
晕,这个贴子还能成为头条推荐?
edmond80 2007-04-20
  • 打赏
  • 举报
回复

<id name="AutoID" column="AutoID" type="java.lang.Integer" unsaved-value="null">
<generator class="assigned" />
</id>

中的<generator class="assigned" />

改为<generator class="identity" />

试试

我的项目中,自动增长主键就是这么配的。数据库同样是MSSQL。
v38 2007-04-19
  • 打赏
  • 举报
回复
怎么会是 0 ?
========================================
0是你自已做参数传进来的,别人怎么回答呢?
csdn里面带星的会员尚且如此对待问题,真的没办法在CSDN混了
「已注销」 2007-04-19
  • 打赏
  • 举报
回复
哈哈,我现在知道了!

我现在将取出的对象 set 了一次...

public ActionForward update(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
{
CsdjForm csdj_vo = (CsdjForm) form;

Csdj csdj_po = new Csdj();

BeanUtils.copyProperties(csdj_po, csdj_vo);

csdj_po.setAutoID(csdj_vo.AutoID);


CsdjDAO.mdfObj(csdj_po);

return list(mapping, form, request, response);
}

然后用:
public static void mdfObj(Object obj)
{
Transaction tx = null;
Session session = null;
try
{
session = HibernateUtil.currentSession();
tx = session.beginTransaction();

System.out.println("==== 开始 update 操作 ====");
System.out.println(((Csdj) obj).getAutoID());
session.update(obj);

System.out.println("====== 结束 update 操作 ======");

session.flush();
session.clear();

tx.commit();
System.out.println("======== 提交事务 ========");
}
catch (HibernateException e)
{
e.printStackTrace();
tx.rollback();
}
finally
{
HibernateUtil.closeSession(session);
}
}

打出还是 0
v38 2007-04-19
  • 打赏
  • 举报
回复
怎么会是 0 ?
========================================
我第一贴子就给你说,问题一定是出在这里,至于怎么会是0,你要自已找了,从你那个待久化对象被取出来的时候开始
早就说是这个问题,却一直不去找原因,唉~你咋就不听呢
greatzheng 2007-04-19
  • 打赏
  • 举报
回复
关注
「已注销」 2007-04-19
  • 打赏
  • 举报
回复
怎么会是 0 ?
v38 2007-04-19
  • 打赏
  • 举报
回复
session.update(obj);
那你在obj之前,调用一下System.out.print(obj.getAutoId());
看看打印出来的是什么
问题一定是出在这里
「已注销」 2007-04-19
  • 打赏
  • 举报
回复
id 改成 identity 还是:

Hibernate: update Csdj_table set dah=?, brxm=?, brsfzh=?, brgzdw=?, brzwzc=?, brzt1=?, brzt2=?, poxm=?, posfzh=?, pogzdw=?, pozwzc=?, pozt1=?, pozt2=?, qxbm=?, fwzl=?, gryy=?, cqzh=?, ycqdw=?, ssxt=?, dwxz=?, jzmj=?, hdmj=?, sfcb=?, ydmr=?, cbcl=?, hdqk=?, msrxm=?, msrsfzh=?, cje=?, bz=?, shrq=?, csrq=?, yt=?, Pc=?, sjly=?, dwbm=?, zjgs=?, jyzt=? where AutoID=?
ERROR [http-8080-Processor24] (AbstractFlushingEventListener.java:287) - Could not synchronize database state with session
org.hibernate.HibernateException: Unexpected row count: 0 expected: 1
at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:32)
「已注销」 2007-04-19
  • 打赏
  • 举报
回复
TO:v38

一直在调试!不好意思

我修改了 mdyObj 方法:
public static void mdfObj(Object obj)
{
Transaction tx = null;
Session session = null;
try
{
session = HibernateUtil.currentSession();
tx = session.beginTransaction();

System.out.println("==== 开始 update 操作 ====");

session.update(obj);

System.out.println("====== 结束 update 操作 ======");

session.flush(); // 报错后加的
session.clear(); // 报错后加的

tx.commit();

System.out.println("======== 提交事务 ========");
}
catch (HibernateException e)
{
e.printStackTrace();
tx.rollback();
}
finally
{
HibernateUtil.closeSession(session);
}
}
加载更多回复(22)
内容概要:本文围绕“基于改进秃鹰算法的微电网群经济优化调度”展开研究,利用Matlab代码实现优化算法的仿真与复现。研究重点在于通过改进的秃鹰搜索算法(Bald Eagle Search Algorithm, BESA)解决微电网群在运行过程中的经济调度问题,提升算法的收敛速度与全局寻优能力,以实现对分布式能源、储能系统及负荷的高效协调管理。文中详细阐述了微电网群的系统架构、数学建模过程、目标函数设计(如运行成本最小化、碳排放降低等),并结合智能优化算法进行求解,验证了改进算法相较于传统方法在调度精度和效率方面的优越性。同时,研究还探讨了算法在多场景下的适应性,为微电网群的智能化、低碳化运行提供了技术支持与实践参考。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、智能优化算法相关工作的工程技术人员。; 使用场景及目标:① 学习并掌握改进秃鹰算法在复杂优化问题中的应用方法;② 实现微电网群经济调度模型的构建与求解;③ 对比不同智能算法在电力系统优化中的性能表现;④ 为科研论文复现、课题研究或工程项目提供算法支持与代码参考。; 阅读建议:建议读者结合文中提供的Matlab代码逐模块分析,重点关注算法改进策略与调度模型的耦合实现方式,同时可尝试在不同参数设置或场景条件下进行仿真实验,以加深对算法性能与调度效果的理解。
内容概要:本文围绕多旋翼无人机姿态估计算法的开发与性能评估展开系统性研究,重点对比了线性与非线性滤波算法在复杂飞行环境下的表现。通过构建基于扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)等先进算法的姿态估计器,融合IMU、磁力计、视觉传感器等多源数据,有效提升了姿态解算的精度与鲁棒性。研究涵盖了静态悬停、高速机动及磁干扰等多种典型飞行场景,利用MATLAB/Simulink平台完成仿真实验,并结合实测飞行数据与VICON高精度运动捕捉系统提供的真值进行定量分析。结果表明,非线性滤波器在动态工况下具有显著优势,尤其在抑制漂移和抵抗外部干扰方面优于传统线性方法。文章还提出了传感器融合、自适应建模、冗余配置等一系列降低偏差影响的技术路径,为高可靠性无人机导航系统的设计提供了理论依据与实践指导。; 适合人群:具备控制理论、信号处理及状态估计基础知识,从事无人机导航、控制算法研发或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于开发高精度无人机姿态解算模块;②为多传感器融合算法的设计、实现与验证提供参考案例;③服务于复杂环境下无人系统状态估计的教学演示与科研攻关; 阅读建议:建议结合文中所述MATLAB/Simulink仿真模型与实测数据集进行复现与调试,重点关注EKF与UKF的数学推导、实现细节及关键参数调优过程,深入理解非线性系统建模、状态估计与工程实际之间的平衡与折衷。

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧