facebook

cannot update a record(struts1.2+hibernate3)

  1. MyEclipse Archived
  2.  > 
  3. Database Tools (DB Explorer, Hibernate, etc.)
Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #241691 Reply

    signsun
    Member

    eclipse3.1.1+myeclipse4.0.3+oracle9i

    use a struts action to get an object from db
    and request.getSession().setAbtriude(“a”,a);

    update the record in a jsp page
    in another struts action ,i update the object to the db
    code is:
    aFrom af= (aForm)form;
    aObject aobj=new aObject();
    aobj.setAbc(aobj.getAbc());
    ….
    Session session=null;
    transaction tx=null;
    try
    {session=HibernateSessionFactory.currentSession();
    tx= session.beginTransaction();
    session.update(data);
    tx.commit();
    }
    catch(HibernateException e)
    {

    }….

    errors:
    org.hibernate.exception.GenericJdbcException:Could not execute jdbc batch update

    what can i do?
    thanks.

    #241731 Reply

    Riyad Kalla
    Member

    What does your hibernate.cfg.xml file look like, also what does your hbm.xml file for your “data” class look like?

    #241753 Reply

    signsun
    Member

    Here is my code:
    exception

    javax.servlet.ServletException: Could not execute JDBC batch update
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:27)

    root cause

    org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
    org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92)
    org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80)
    org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:181)
    org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
    org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:137)
    org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
    org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
    org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
    org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
    com.sunyang.Hibernate.TaskdocService.updateTaskdoc(TaskdocService.java:101)
    com.sunyang.struts.action.EditTaskdocAction.execute(EditTaskdocAction.java:61)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:27)

    /hibernate.cfg.xml:

    <?xml version=’1.0′ encoding=’UTF-8′?>
    <!DOCTYPE hibernate-configuration PUBLIC
    “-//Hibernate/Hibernate Configuration DTD 3.0//EN”
    http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”&gt;

    <!– Generated by MyEclipse Hibernate Tools. –>
    <hibernate-configuration>

    <session-factory>
    <property name=”myeclipse.connection.profile”>myora</property>
    <property name=”connection.url”>jdbc:oracle:thin:@localhost:1521:orax</property>
    <property name=”connection.username”>scott</property>
    <property name=”connection.password”>tiger</property>
    <property name=”connection.driver_class”>oracle.jdbc.driver.OracleDriver</property>
    <property name=”dialect”>org.hibernate.dialect.Oracle9Dialect</property>

    <mapping resource=”com/sunyang/Hibernate/Taskdoc.hbm.xml” />
    <mapping resource=”com/sunyang/Hibernate/Sysuser.hbm.xml” />

    </session-factory>

    </hibernate-configuration>

    Taskdoc.hbm.xml:

    <?xml version=”1.0″ encoding=’UTF-8′?>
    <!DOCTYPE hibernate-mapping PUBLIC
    “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
    http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd&#8221; >

    <!– DO NOT EDIT: This is a generated file that is synchronized –>
    <!– by MyEclipse Hibernate tool integration. –>
    <!– Created Sat Nov 12 15:02:12 CST 2005 –>
    <hibernate-mapping package=”com.sunyang.Hibernate”>

    <class name=”Taskdoc” table=”TASKDOC”>
    <id name=”sno” column=”SNO” type=”java.lang.Long”>
    <generator class=”sequence”>
    <param name=”sequence”>sequ_taskdoc_sno</param>
    </generator>
    </id>

    <property name=”deptname” column=”DEPTNAME” type=”java.lang.String” />
    <property name=”serialno” column=”SERIALNO” type=”java.lang.String” />
    <property name=”techtype” column=”TECHTYPE” type=”java.lang.String” />
    <property name=”techsrc” column=”TECHSRC” type=”java.lang.String” />
    <property name=”techname” column=”TECHNAME” type=”java.lang.String” />
    <property name=”builddate” column=”BUILDDATE” type=”java.lang.String” />
    <property name=”currstat” column=”CURRSTAT” type=”java.lang.String” />
    <property name=”technote” column=”TECHNOTE” type=”java.lang.String” />
    <property name=”vnote” column=”VNOTE” type=”java.lang.String” />
    <property name=”knote” column=”KNOTE” type=”java.lang.String” />
    </class>

    </hibernate-mapping>

    action:

    package com.sunyang.struts.action;

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

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

    import com.sunyang.Hibernate.Taskdoc;
    import com.sunyang.Hibernate.TaskdocService;
    import com.sunyang.struts.form.EditTaskdocForm;

    /**
    * MyEclipse Struts
    * Creation date: 11-15-2005
    *
    * XDoclet definition:
    * @struts.action path=”/editTaskdoc” name=”editTaskdocForm” input=”/jsp/editTaskdocDetail.jsp” scope=”request” validate=”true”
    */
    public class EditTaskdocAction extends Action {

    // ——————————————————— Instance Variables

    // ——————————————————— Methods

    /**
    * Method execute
    * @param mapping
    * @param form
    * @param request
    * @param response
    * @return ActionForward
    */
    public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response) {
    EditTaskdocForm editTaskdocForm = (EditTaskdocForm) form;
    // TODO Auto-generated method stub
    Taskdoc data= new Taskdoc();

    data.setDeptname(editTaskdocForm.getDeptname());
    data.setBuilddate(editTaskdocForm.getBuilddate());
    data.setCurrstat(editTaskdocForm.getCurrstat());
    data.setKnote(editTaskdocForm.getKnote());
    data.setSerialno(editTaskdocForm.getSerialno());
    data.setSno(editTaskdocForm.getSno());
    data.setTechname(editTaskdocForm.getTechname());
    data.setTechnote(editTaskdocForm.getTechnote());
    data.setTechsrc(editTaskdocForm.getTechsrc());
    data.setTechtype(editTaskdocForm.getTechtype());
    data.setVnote(editTaskdocForm.getVnote());

    TaskdocService.getInstance().updateTaskdoc(data);

    System.err.println(data.getDeptname());

    // TODO Auto-generated method stub
    return mapping.findForward(“success”);
    }

    }

    public class TaskdocService {
    …….

    public void updateTaskdoc(Taskdoc data)
    {
    /*
    * Use the ConnectionFactory to retrieve an open
    * Hibernate Session.
    *
    */
    Session session = null;
    Transaction tx=null;

    try
    {
    session = HibernateSessionFactory.currentSession();
    tx=session.beginTransaction();

    //System.err.println(data.getSno());

    session.update(data,data.getSno());

    tx.commit();
    }
    catch (HibernateException e)
    {
    if (tx!=null)
    {
    tx.rollback();
    throw e;
    }
    }
    /*
    * Regardless of whether the above processing resulted in an Exception
    * or proceeded normally, we want to close the Hibernate session. When
    * closing the session, we must allow for the possibility of a Hibernate
    * Exception.
    *
    */
    finally
    {
    HibernateSessionFactory.closeSession();
    }

    }
    }

    #241778 Reply

    Riyad Kalla
    Member

    session.update(data,data.getSno());

    In your updateTaskDoc method above, you have the quoted line of code, did you mistype this or do you really have a comma in there?

    Also, when the update fails, copy and paste the ENTIRE stacks trace for me, I have a feeling if you read far enough down the exception tree you may see a connection problem.

Viewing 4 posts - 1 through 4 (of 4 total)
Reply To: cannot update a record(struts1.2+hibernate3)

You must be logged in to post in the forum log in