org.hibernate.StaleStateException: пакетное обновление вернуло неожиданное количество строк из обновления [0]; фактическое количество строк: 0; ожидается: 1 - PullRequest
26 голосов
/ 04 октября 2010

Я использую распорки и спящий режим. У меня есть родительские и дочерние отношения с использованием набора в HBM. В действии я использую session.saveOrUpdate() метод для сохранения, но при сохранении он показывает ошибку ниже. Может ли кто-нибудь помочь с этим объяснением, где я допустил ошибку?

Вот мой 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>

Мое действие

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");
 }

}

Моя родительская модель

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;
 }


}  

Моя детская модель

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;
 }


} 

И моя форма

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 = "";

 }

}

Ошибка:

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)

Ответы [ 13 ]

0 голосов
/ 11 июля 2016

Это часто случается, когда ваш SQL плох (неявные преобразования типов и т. Д.).

Включите ведение журнала SQL в спящем режиме, добавив следующие строки в файл свойств log4j:

регистрирует операторы SQL

log4j.logger.org.hibernate.SQL = отлаживать

Записывает параметры JDBC, переданные в запрос

log4j.logger.org.hibernate.type = след

Перед сбоем вы увидите в журнале последнюю попытку SQL, скопируйте и вставьте этот SQL во внешний клиент SQL и запустите его.

0 голосов
/ 12 мая 2016

если указанный идентификатор не существует в БД, то вы можете получить это исключение.

Exception in thread "main" org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
0 голосов
/ 02 сентября 2015

У меня было то же самое. Создание Id (0) с помощью "(значение вашей модели) .setId (0)" решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...