org.hibernate.StaleStateException:批量更新从update [0]返回意外的行数;实际行数:0;预计:1 [英] org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

查看:86
本文介绍了org.hibernate.StaleStateException:批量更新从update [0]返回意外的行数;实际行数:0;预计:1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用struts和hibernate。我有一个使用HBM集的父母和孩子的关系。
在操作中,我使用 session.saveOrUpdate()方法保存,但保存时显示下面的错误。任何人都可以帮我解释一下我犯的错误吗?



这是我的hbm.file

 <?xml version =1.0?> 
<!DOCTYPE hibernate-mapping PUBLIC
- // Hibernate / Hibernate映射DTD 3.0 // EN
http://hibernate.sourceforge.net/hibernate-mapping-3.0 .dtd>

< hibernate-mapping>

< id name =idcolumn =idtype =java.lang.Long>
< generator class =increment/>
< / id>
< property name =cnamecolumn =cname/>
< property name =cdatecolumn =cdate/>
< property name =csourcecolumn =csource/>
< property name =cdestinationcolumn =cdestination/>
< property name =createcolumn =createby/>
< property name =statuscolumn =status/>

< set name =itemListtable =iteminverse =true
cascade =all-delete-orphan>
< key>
< column name =id/>
< / key>
< / set>
< / class>

< class name =com.model.Itemtable =item>
< id name =itemidcolumn =itemidtype =java.lang.Long>
< generator class =increment/>
< / id>
< property name =itemNamecolumn =itemname/>
< property name =weightcolumn =weight/>
column =id/>
< / class>
< / hibernate-mapping>

我的动作

  package com.action; 

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.beanutils.BeanUtils;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.plugin.HibernatePlugIn;
import com.form.cargoForm;
import com.model.cargo;
import com.model.Item;

$ b公共类CargoAction扩展DispatchAction {


public ActionForward add(ActionMapping映射,ActionForm表单,
HttpServletRequest请求,HttpServletResponse响应)
抛出Exception {

if(log.isDebugEnabled()){
log.debug(Entering Master add method);
}

尝试{

cargoForm cargoForm =(cargoForm)form;
//System.out.println(\"ID+ cargoForm.getId());
货物=新货物();
System.out.println(in cargo Action);
//将customerform复制到模型
cargoForm.reset(映射,请求);
BeanUtils.copyProperties(cargo,cargoForm);
cargoForm.reset(映射,请求);
// cargoForm.setInputParam(new);
// updateFormBean(mapping,request,cargoForm);


$ b catch(Exception ex){
ex.printStackTrace();
返回mapping.findForward(failure);
}

返回mapping.findForward(success1);

$ b $公共ActionForward保存(ActionMapping映射,ActionForm表单,
HttpServletRequest请求,HttpServletResponse响应)
抛出异常{

SessionFactory sessionFactory = NULL;
会话会话=空;
System.out.println(in cargo Action);
try {
sessionFactory =(SessionFactory)servlet
.getServletContext()。getAttribute(HibernatePlugIn.KEY_NAME);
session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

cargoForm carForm =(cargoForm)表单;


货物=新货物();

System.out.println(in cargo Action);

BeanUtils.copyProperties(cargo,carForm);
System.out.println(id+ carForm.getId());
System.out.println(item id+ carForm.getItemid());
Set itemset = carForm.getItemDtl();

System.out.println(size+ itemset.size());
Iterator iterator = itemset.iterator();
while(iterator.hasNext()){
Item it =(Item)iterator.next();
System.out.println(name+ it.getItemName()); //log.debug(\"HERE);
it.setCargo(货物); }

cargo.setItemList(itemset);
System.out.println(size+ itemset.size());
session.saveOrUpdate(货物,货物);
tx.commit();
} catch(Exception e){
e.printStackTrace();
}
返回mapping.findForward(success);


$ b public ActionForward搜索(ActionMapping映射,ActionForm表单,
HttpServletRequest请求,HttpServletResponse响应)
抛出Exception {
System。 out.println(in cargo search Action);
SessionFactory sessionFactory =(SessionFactory)servlet
.getServletContext()。getAttribute(HibernatePlugIn.KEY_NAME);
HttpSession session1 = request.getSession();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
cargoForm cargoform =(cargoForm)表单;
// System.out.println(Name+ cargoForm.getName());
货物=新货物();
System.out.println(in cargo search Action);
//将customerform复制到模型
BeanUtils.copyProperties(cargo,cargoform);
字符串名称;
字符串状态;
字符串createby;

name = cargo.getCname();
status = cargo.getStatus();
createby = cargo.getCreate();
System.out.println(Name ...+ name);
System.out.println(status ...+ status);
System.out.println(createby ...+ createby);
if((name.equals())&&(createby.equals())
&&(status.equals() ))
返回mapping.findForward(failure);
String sql_QUERY =from cargo c where c.cname =:name or c.status =:status or c.create =:createby;
Query query = session.createQuery(SQL_QUERY);
query.setParameter(name,name);
query.setParameter(status,status);
query.setParameter(createby,createby);
ArrayList al = new ArrayList(); (Iterator i = query.iterate(); i.hasNext();){
cargo cargo1 =(cargo)i.next();
al.add(cargo1);
System.out.println(Cargo ID is:+ cargo1.getId());
}
System.out.println(Cargo list is:+ al.size());
session1.setAttribute(clist,al);
} catch(Exception e){
e.printStackTrace();
返回mapping.findForward(failure);
}
System.out.println(货物列表成功);

返回mapping.findForward(success);




$ b public ActionForward编辑(ActionMapping映射,ActionForm表单,
HttpServletRequest请求,HttpServletResponse响应)
throws异常{
SessionFactory sessionFactory = null;
会话会话=空;
if(log.isDebugEnabled()){
log.debug(输入主编辑方法);


try {
sessionFactory =(SessionFactory)servlet
.getServletContext()。getAttribute(HibernatePlugIn.KEY_NAME);
session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
cargoForm carForm =(cargoForm)表单;
// System.out.println(carForm.getStatus());
// System.out.println(carForm.getCreate());
货物=新货物();
BeanUtils.copyProperties(cargo,carForm);
System.out.println(货物编辑+ cargo.getId());
String qstring =from cargo c where c.id =:id;
Query query = session.createQuery(qstring);
query.setParameter(id,cargo.getId());
ArrayList all = new ArrayList();
cargo c =(cargo)query.iterate()。next();

System.out.println(Edit Cargo list+ all.size());


Set purchaseArray = new HashSet();
System.out.println(Edit+ c.getItemList()。size());
carForm.setItemDtl(purchaseArray);
BeanUtils.copyProperties(carForm,c);
// transaction.commit();
session.flush();
} catch(Exception e){
e.printStackTrace();
返回mapping.findForward(failure);
}

//返回一个转发编辑转发
System.out.println(Edit Cargo list is success);
返回mapping.findForward(succ);

$ b $ public ActionForward delete(ActionMapping映射,ActionForm表单,
HttpServletRequest请求,HttpServletResponse响应)
抛出异常{

try {
SessionFactory sessionFactory =(SessionFactory)servlet
.getServletContext()。getAttribute(HibernatePlugIn.KEY_NAME);
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
cargoForm carForm =(cargoForm)表单;
// System.out.println(carForm.getStatus());
// System.out.println(carForm.getCreate());
货物=新货物();
BeanUtils.copyProperties(cargo,carForm);
System.out.println(货物删除+ cargo.getId());
// String qstring =从货物c中删除,其中c.id =:id;
//查询查询= session.createQuery(qstring);
session.delete(货物,货物);
// session.delete(cargo);
// session.flush();
//query.setParameter(\"id,cargo.getId());
// int row = query.executeUpdate();
//System.out.println(\"deleted row+ row);
tx.commit();

} catch(Exception e){
e.printStackTrace();
返回mapping.findForward(failure);
}
//返回一个转发以编辑转发
System.out.println(Deleted success);
返回mapping.findForward(succes);
}

}

我的父母模特

  package com.model; 

import java.util.HashSet;
import java.util.Set;

公共类货物{

私人长ID;
private String cname;
私人字符串cdate;
private String csource;
private String cdestination;
private String create;
私人字符串状态;

private Set itemList = new HashSet();

public Long getId(){
return id;
}

public void setId(Long id){
this.id = id;
}

public String getCname(){
return cname;
}

public void setCname(String cname){
this.cname = cname;
}

public String getCdate(){
return cdate;
}

public void setCdate(String cdate){
this.cdate = cdate;
}

public String getCsource(){
return csource;
}

public void setCsource(String csource){
this.csource = csource;
}

public String getCdestination(){
return cdestination;
}

public void setCdestination(String cdestination){
this.cdestination = cdestination;
}

public String getCreate(){
return create;
}

public void setCreate(String create){
this.create = create;
}

public String getStatus(){
return status;
}

public void setStatus(String status){
this.status = status;
}

public Set getItemList(){
return itemList;
}

public void setItemList(Set itemList){
this.itemList = itemList;
}


}

我的孩子模型

  package com.model; 

公共类项目{

private长itemid;
private String itemName;
私人字符串重量;
私人货物货物;

public Long getItemid(){
return itemid;
}
public void setItemid(Long itemid){
this.itemid = itemid;
}
public String getItemName(){
return itemName;
}
public void setItemName(String itemName){
this.itemName = itemName;
}
public String getWeight(){
return weight;
}
public void setWeight(String weight){
this.weight = weight;
}
公共货物getCargo(){
退货;
}
public void setCargo(货物货物){
this.cargo =货物;
}


}

我的表单

  package com.form; 

import java.util.HashSet;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

import com.model.Item;

public class cargoForm扩展ActionForm {
private Long id;
private String cname;
私人字符串cdate;
private String csource;
private String cdestination;
private String create;
私人字符串状态;

private Long [] itemid;
private String [] itemName;
private String [] weight;

private Set itemset = new HashSet();

public Long getId(){
return id;
}

public void setId(Long id){
this.id = id;
}

public String getCname(){
return cname;
}

public void setCname(String cname){
this.cname = cname;
}

public String getCdate(){
return cdate;
}

public void setCdate(String cdate){
this.cdate = cdate;
}

public String getCsource(){
return csource;
}

public void setCsource(String csource){
this.csource = csource;
}

public String getCdestination(){
return cdestination;
}

public void setCdestination(String cdestination){
this.cdestination = cdestination;
}

public String getCreate(){
return create;
}

public void setCreate(String create){
this.create = create;
}

public String getStatus(){
return status;
}

public void setStatus(String status){
this.status = status;
}

public Long [] getItemid(){
return itemid;
}

public void setItemid(Long [] itemid){
this.itemid = itemid;
}

public String [] getItemName(){
return itemName;
}

public void setItemName(String [] itemName){
this.itemName = itemName;
}

public String [] getWeight(){
return weight;
}

public void setWeight(String [] weight){
this.weight = weight;
}

/ *
* public Set getItemset(){return itemset; }
*
* public void setItemset(Set itemset){this.itemset = itemset; }
* /
public Set getItemDtl(){
if(itemid!= null){
itemset = new HashSet();
System.out.println(cargadd form+ itemid);
for(int i = 0; i< itemid.length; i ++){
Item it = new Item();
// it.setItemId(itemId [i]);
it.setItemName(itemName [i]);
System.out.println(cargadd form+ itemName [i]);
it.setWeight(weight [i]);

itemset.add(it);
System.out.println(cargadd form+ itemset.size());
}
}
return itemset;


public void setItemDtl(Set itemset){
System.out.println(cargadd form+ itemset.size());
this.itemset = itemset;
System.out.println(cargadd form+ itemset.size());
}

public void reset(ActionMapping映射,HttpServletRequest请求){

cname =;
csource =;
cdestination =;
cdate =;
status =;
create =;

}

}

错误:

  Hibernate:从项目
中选择max(itemid)Hibernate:插入项目(itemname,weight,position,id ,itemid)值(?,?,?,?,?)
休眠:更新货物集名称=?,日期= ?,源=?,目的地=?,createby = ?,状态=?其中id =?
2010年10月4日上午10时44分08秒org.hibernate.jdbc.BatchingBatcher doExecuteBatch
SEVERE:执行批处理的异常:
org.hibernate.StaleStateException:批处理更新从更新返回意外的行计数[0];实际行数:0;预期:1
在org.hibernate.jdbc.Expectations $ BasicExpectation.checkBatched(Expectations.java:61)
at org.hibernate.jdbc.Expectations $ BasicExpectation.verifyOutcome(Expectations.java:46)
。在org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:68)
处org.hibernate作为org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
。在org.hibernate.engine.ActionQueue.executeActions jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
(ActionQueue.java:235)
在org.hibernate.engine.ActionQueue.executeActions(ActionQueue。的java:140)
。在org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
。在org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
在org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
在org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
在org.hibernate .tr (本地方法)$ b $(在本地方法)
(com.action.CargoAction.save(CargoAction.java:125)
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)
在org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org。 apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupC ommand.java:305)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor。
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)在javax.servlet.http.HttpServlet.service在javax.servlet.http.HttpServlet.service
(HttpServlet.java:647)
(HttpServlet.java:729)
在org.apache .catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core .StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:127)
在org.apache.ca talina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
处org.apache.catalina.connector org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
。 CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler。 processConnection(Http11BaseProtocol.java:665)
处org.apache.tomcat.util.net.LeaderFollowerWorkerThread org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
。 runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source )
2010年10月4日上午10点44分08秒org.hibernate.event.def.AbstractFlushingEventListener performExecutions
SEVERE:无法与会话
同步数据库状态org.hibernate.StaleStateException:批量更新从update [0]返回意外的行数;实际行数:0;预期:1
在org.hibernate.jdbc.Expectations $ BasicExpectation.checkBatched(Expectations.java:61)
at org.hibernate.jdbc.Expectations $ BasicExpectation.verifyOutcome(Expectations.java:46)
at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:68)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate。在org.hibernate.engine.ActionQueue.executeActions jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
(ActionQueue.java:235)
在org.hibernate.engine.ActionQueue.executeActions(ActionQueue。的java:140)
。在org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
。在org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
在org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
在org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
在org.hibernate .tr (本地方法)$ b $(在本地方法)
(com.action.CargoAction.save(CargoAction.java:125)
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)
在org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org。 apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupC ommand.java:305)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor。
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache .catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
在org.apache.catalina.core .StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:127)
在org.apache.ca talina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
处org.apache.catalina.connector org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
。 CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler。 processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread。 runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source )
org.hibernate.StaleStateException:批量更新从update [0]返回意外的行数;实际行数:0;预期:1
在org.hibernate.jdbc.Expectations $ BasicExpectation.checkBatched(Expectations.java:61)
at org.hibernate.jdbc.Expectations $ BasicExpectation.verifyOutcome(Expectations.java:46)
at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:68)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate。在org.hibernate.engine.ActionQueue.executeActions jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
(ActionQueue.java:235)
在org.hibernate.engine.ActionQueue.executeActions(ActionQueue。的java:140)
。在org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
。在org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
在org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
在org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
在org.hibernate .tr (本地方法)$ b $(在本地方法)
(com.action.CargoAction.save(CargoAction.java:125)
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)
在org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org。 apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupC ommand.java:305)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor。
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache .catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core .StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:127)
在org.apache.ca在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
org.apache.catalina.connector上
。 CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler。 processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread。 runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source )


解决方案在 id 属性,如果您使用任何生成器类,那么对于该属性,不应将值expli如果你明确地设置了Id属性的值,它会导致上面的错误。选中此项可避免此错误。


I am using struts and hibernate. I have a parent and child relation using set in hbm. In the action I am using session.saveOrUpdate() method to save but while saving it is showing the below error. Can anyone help regardng this with explanation where I made the mistake?

Here is my hbm.file

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

 <class name="com.model.cargo" table="cargo">
  <id name="id" column="id" type="java.lang.Long">
   <generator class="increment" />
  </id>
  <property name="cname" column="cname" />
  <property name="cdate" column="cdate" />
  <property name="csource" column="csource" />
  <property name="cdestination" column="cdestination" />
  <property name="create" column="createby" />
  <property name="status" column="status" />

  <set name="itemList" table="item" inverse="true"
   cascade="all-delete-orphan">
   <key>
    <column name="id" />
   </key>
   <one-to-many class="com.model.Item" />
  </set>
 </class>

 <class name="com.model.Item" table="item">
  <id name="itemid" column="itemid" type="java.lang.Long">
   <generator class="increment" />
  </id>
  <property name="itemName" column="itemname" />
  <property name="weight" column="weight" />
  <many-to-one class="com.model.cargo" name="cargo"
   column="id" />
 </class>
</hibernate-mapping>

My action

package com.action;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.beanutils.BeanUtils;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.plugin.HibernatePlugIn;
import com.form.cargoForm;
import com.model.cargo;
import com.model.Item;


public class CargoAction extends DispatchAction {


 public ActionForward add(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {

  if (log.isDebugEnabled()) {
   log.debug("Entering Master add method");
  }

  try {

   cargoForm cargoForm = (cargoForm) form;
   //System.out.println("ID" + cargoForm.getId());
   cargo cargo = new cargo();
   System.out.println("in cargo Action");
   // copy customerform to model
   cargoForm.reset(mapping, request);
   BeanUtils.copyProperties(cargo, cargoForm);
   cargoForm.reset(mapping, request);
  // cargoForm.setInputParam("new");
   // updateFormBean(mapping, request, cargoForm);

  }

  catch (Exception ex) {
   ex.printStackTrace();
   return mapping.findForward("failure");
  }

  return mapping.findForward("success1");
 }

 public ActionForward save(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {

  SessionFactory sessionFactory=null;
  Session session =null;
  System.out.println("in cargo Action");
  try{
  sessionFactory = (SessionFactory) servlet
    .getServletContext().getAttribute(HibernatePlugIn.KEY_NAME);  
  session = sessionFactory.openSession();
  Transaction tx = session.beginTransaction();

  cargoForm carForm = (cargoForm) form;


  cargo cargo = new cargo();

  System.out.println("in cargo Action");

  BeanUtils.copyProperties(cargo,carForm);
  System.out.println("id"+ carForm.getId()); 
  System.out.println("item id"+ carForm.getItemid()); 
  Set itemset = carForm.getItemDtl();

    System.out.println("size"+itemset.size()); 
    Iterator iterator =itemset.iterator();   
    while(iterator.hasNext()) { 
     Item it = (Item)iterator.next();
    System.out.println("name"+it.getItemName()); //log.debug("HERE");
   it.setCargo(cargo); } 

  cargo.setItemList(itemset);
  System.out.println("size"+ itemset.size()); 
  session.saveOrUpdate("cargo",cargo);
  tx.commit();
  }catch(Exception e){
   e.printStackTrace();
  }
  return mapping.findForward("success");

 }

 public ActionForward search(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  System.out.println("in cargo search Action");
  SessionFactory sessionFactory = (SessionFactory) servlet
    .getServletContext().getAttribute(HibernatePlugIn.KEY_NAME);
  HttpSession session1 = request.getSession();
  Session session = sessionFactory.openSession();
  Transaction tx = session.beginTransaction();
  cargoForm cargoform = (cargoForm) form;
  // System.out.println("Name"+cargoForm.getName());
  cargo cargo = new cargo();
  System.out.println("in cargo search Action");
  // copy customerform to model
  BeanUtils.copyProperties(cargo, cargoform);
  String name;
  String status;
  String createby;

  name = cargo.getCname();
  status = cargo.getStatus();
  createby = cargo.getCreate();
  System.out.println("Name..." + name);
  System.out.println("status..." + status);
  System.out.println("createby..." + createby);
  try {
   if ((name.equals("")) && (createby.equals(""))
     && (status.equals("")))
    return mapping.findForward("failure");
   String SQL_QUERY = "from cargo c where c.cname=:name or c.status=:status or c.create=:createby";
   Query query = session.createQuery(SQL_QUERY);
   query.setParameter("name", name);
   query.setParameter("status", status);
   query.setParameter("createby", createby);
   ArrayList al = new ArrayList();
   for (Iterator i = query.iterate(); i.hasNext();) {
    cargo cargo1 = (cargo) i.next();
    al.add(cargo1);
    System.out.println("Cargo ID is:" + cargo1.getId());
   }
   System.out.println("Cargo list is:" + al.size());
   session1.setAttribute("clist", al);
  } catch (Exception e) {
   e.printStackTrace();
   return mapping.findForward("failure");
  }
  System.out.println("search Cargo list is success");

  return mapping.findForward("success");
 }




 public ActionForward edit(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  SessionFactory sessionFactory=null;
  Session session =null;
  if (log.isDebugEnabled()) {
   log.debug("Entering Master Edit method");
  }

  try {
   sessionFactory = (SessionFactory) servlet
     .getServletContext().getAttribute(HibernatePlugIn.KEY_NAME);
   session = sessionFactory.openSession();
   Transaction transaction=session.beginTransaction();
   cargoForm carForm = (cargoForm) form;
   // System.out.println(carForm.getStatus());
   // System.out.println(carForm.getCreate());
   cargo cargo = new cargo();
   BeanUtils.copyProperties(cargo, carForm);
      System.out.println("In Cargo Edit "+cargo.getId());
      String qstring = "from cargo c where c.id=:id";
   Query query = session.createQuery(qstring);
   query.setParameter("id", cargo.getId());
   ArrayList all = new ArrayList();
   cargo c = (cargo) query.iterate().next();

   System.out.println("Edit Cargo list " + all.size()); 


     Set purchaseArray = new HashSet();
           System.out.println("Edit"+c.getItemList().size());
           carForm.setItemDtl(purchaseArray);
           BeanUtils.copyProperties(carForm,c);
           // transaction.commit();
            session.flush();
  } catch (Exception e) {
   e.printStackTrace();
   return mapping.findForward("failure");
  }

  // return a forward to edit forward
  System.out.println("Edit Cargo list is success");
  return mapping.findForward("succ");
 }

 public ActionForward delete(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {

  try {
   SessionFactory sessionFactory = (SessionFactory) servlet
     .getServletContext().getAttribute(HibernatePlugIn.KEY_NAME);
   Session session = sessionFactory.openSession();
   Transaction tx = session.beginTransaction();
   cargoForm carForm = (cargoForm) form;
   // System.out.println(carForm.getStatus());
   // System.out.println(carForm.getCreate());
   cargo cargo = new cargo();
   BeanUtils.copyProperties(cargo, carForm);
      System.out.println("In Cargo Delete "+cargo.getId());
   //String qstring = "delete from cargo c where c.id=:id";
   //Query query = session.createQuery(qstring);
   session.delete("cargo",cargo);
     // session.delete(cargo);
     // session.flush();
   //query.setParameter("id", cargo.getId());
   //int row=query.executeUpdate();
   //System.out.println("deleted row"+row);
   tx.commit();

  } catch (Exception e) {
   e.printStackTrace();
   return mapping.findForward("failure");
  }
  // return a forward to edit forward
  System.out.println("Deleted success");
  return mapping.findForward("succes");
 }

}

My parent model

package com.model;

import java.util.HashSet;
import java.util.Set;

public class cargo {

 private Long id;
 private String cname;
 private String cdate;
 private String csource;
 private String cdestination;
 private String create;
 private String status;

 private Set itemList = new HashSet();

 public Long getId() {
  return id;
 }

 public void setId(Long id) {
  this.id = id;
 }

 public String getCname() {
  return cname;
 }

 public void setCname(String cname) {
  this.cname = cname;
 }

 public String getCdate() {
  return cdate;
 }

 public void setCdate(String cdate) {
  this.cdate = cdate;
 }

 public String getCsource() {
  return csource;
 }

 public void setCsource(String csource) {
  this.csource = csource;
 }

 public String getCdestination() {
  return cdestination;
 }

 public void setCdestination(String cdestination) {
  this.cdestination = cdestination;
 }

 public String getCreate() {
  return create;
 }

 public void setCreate(String create) {
  this.create = create;
 }

 public String getStatus() {
  return status;
 }

 public void setStatus(String status) {
  this.status = status;
 }

 public Set getItemList() {
  return itemList;
 }

 public void setItemList(Set itemList) {
  this.itemList = itemList;
 }


}  

My child model

package com.model;

public class Item{

 private Long itemid;
 private String itemName;
 private String weight;
 private cargo cargo;

 public Long getItemid() {
  return itemid;
 }
 public void setItemid(Long itemid) {
  this.itemid = itemid;
 }
 public String getItemName() {
  return itemName;
 }
 public void setItemName(String itemName) {
  this.itemName = itemName;
 }
 public String getWeight() {
  return weight;
 }
 public void setWeight(String weight) {
  this.weight = weight;
 }
 public cargo getCargo() {
  return cargo;
 }
 public void setCargo(cargo cargo) {
  this.cargo = cargo;
 }


} 

And my form

package com.form;

import java.util.HashSet;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

import com.model.Item;

public class cargoForm extends ActionForm {
 private Long id;
 private String cname;
 private String cdate;
 private String csource;
 private String cdestination;
 private String create;
 private String status;

 private Long[] itemid;
 private String[] itemName;
 private String[] weight;

 private Set itemset = new HashSet();

 public Long getId() {
  return id;
 }

 public void setId(Long id) {
  this.id = id;
 }

 public String getCname() {
  return cname;
 }

 public void setCname(String cname) {
  this.cname = cname;
 }

 public String getCdate() {
  return cdate;
 }

 public void setCdate(String cdate) {
  this.cdate = cdate;
 }

 public String getCsource() {
  return csource;
 }

 public void setCsource(String csource) {
  this.csource = csource;
 }

 public String getCdestination() {
  return cdestination;
 }

 public void setCdestination(String cdestination) {
  this.cdestination = cdestination;
 }

 public String getCreate() {
  return create;
 }

 public void setCreate(String create) {
  this.create = create;
 }

 public String getStatus() {
  return status;
 }

 public void setStatus(String status) {
  this.status = status;
 }

 public Long[] getItemid() {
  return itemid;
 }

 public void setItemid(Long[] itemid) {
  this.itemid = itemid;
 }

 public String[] getItemName() {
  return itemName;
 }

 public void setItemName(String[] itemName) {
  this.itemName = itemName;
 }

 public String[] getWeight() {
  return weight;
 }

 public void setWeight(String[] weight) {
  this.weight = weight;
 }

 /*
  * public Set getItemset() { return itemset; }
  * 
  * public void setItemset(Set itemset) { this.itemset = itemset; }
  */
 public Set getItemDtl() {
  if (itemid != null) {
   itemset = new HashSet();
   System.out.println("cargadd form" + itemid);
   for (int i = 0; i < itemid.length; i++) {
    Item it = new Item();
    // it.setItemId(itemId[i]);
    it.setItemName(itemName[i]);
    System.out.println("cargadd form" + itemName[i]);
    it.setWeight(weight[i]);

    itemset.add(it);
    System.out.println("cargadd form" + itemset.size());
   }
  }
  return itemset;
 }

 public void setItemDtl(Set itemset) {
  System.out.println("cargadd form" + itemset.size());
  this.itemset = itemset;
  System.out.println("cargadd form" + itemset.size());
 }

 public void reset(ActionMapping mapping, HttpServletRequest request) {

  cname = "";
  csource = "";
  cdestination = "";
  cdate = "";
  status = "";
  create = "";

 }

}

The error:

Hibernate: select max(itemid) from item
Hibernate: insert into item (itemname, weight, position, id, itemid) values (?, ?, ?, ?, ?)
Hibernate: update cargo set name=?, date=?, source=?, destination=?, createby=?, status=? where id=?
Oct 4, 2010 10:44:08 AM org.hibernate.jdbc.BatchingBatcher doExecuteBatch
SEVERE: 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.Expectations$BasicExpectation.checkBatched(Expectations.java:61)
 at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:46)
 at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:68)
 at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
 at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
 at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
 at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
 at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
 at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
 at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
 at com.action.CargoAction.save(CargoAction.java:125)
 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:269)
 at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
 at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
 at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
 at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
 at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
 at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
 at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
 at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
 at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
 at java.lang.Thread.run(Unknown Source)
Oct 4, 2010 10:44:08 AM org.hibernate.event.def.AbstractFlushingEventListener performExecutions
SEVERE: Could not synchronize database state with session
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
 at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:61)
 at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:46)
 at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:68)
 at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
 at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
 at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
 at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
 at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
 at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
 at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
 at com.action.CargoAction.save(CargoAction.java:125)
 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:269)
 at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
 at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
 at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
 at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
 at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
 at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
 at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
 at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
 at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
 at java.lang.Thread.run(Unknown Source)
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
 at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:61)
 at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:46)
 at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:68)
 at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
 at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
 at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
 at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
 at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
 at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
 at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
 at com.action.CargoAction.save(CargoAction.java:125)
 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:269)
 at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
 at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
 at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
 at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
 at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
 at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
 at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
 at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
 at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
 at java.lang.Thread.run(Unknown Source)

解决方案

In the Hibernate mapping file for the id property, if you use any generator class, for that property you should not set the value explicitly by using a setter method.

If you set the value of the Id property explicitly, it will lead the error above. Check this to avoid this error.

这篇关于org.hibernate.StaleStateException:批量更新从update [0]返回意外的行数;实际行数:0;预计:1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆