Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Author Message
signsun
Post subject: cannot update a record(struts1.2+hibernate3)  PostPosted: Nov 17, 2005 - 08:40 AM



Joined: May 08, 2005
Posts: 6

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.
 
 View user's profile Send private message  
Reply with quote Back to top
support-rkalla
Post subject:   PostPosted: Nov 17, 2005 - 06:56 PM
Registered Member
Registered Member


Joined: Jan 06, 2004
Posts: 23855

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

_________________
Riyad
MyEclipse Support
 
 View user's profile Send private message Visit poster's website  
Reply with quote Back to top
signsun
Post subject:   PostPosted: Nov 18, 2005 - 01:19 AM



Joined: May 08, 2005
Posts: 6

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

<!-- 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" >

<!-- 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();
}

}
}
 
 View user's profile Send private message  
Reply with quote Back to top
support-rkalla
Post subject:   PostPosted: Nov 18, 2005 - 02:49 PM
Registered Member
Registered Member


Joined: Jan 06, 2004
Posts: 23855

Quote:

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.

_________________
Riyad
MyEclipse Support
 
 View user's profile Send private message Visit poster's website  
Reply with quote Back to top
Display posts from previous:     
Jump to:  
All times are GMT - 6 Hours
Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Powered by PNphpBB2 © 2003-2004 The PNphpBB Group
Credits