Oracle and all are varchar2. SQL> desc table2; Name Null? Type ------------------------------- -------- ---- A VARCHAR2(10) B VARCHAR2(10) C VARCHAR2(10)
-----Original Message----- From: Werner Guttmann [mailto:[EMAIL PROTECTED] Sent: Thursday, December 01, 2005 2:26 PM To: [email protected] Subject: Re: [castor-user] ObjectModifiedException Shiva, what database are you using ? And what column types to the three columns a,b and c have ? Werner Shiva P. Kodityala wrote: > Ralf > > I created a sample web application with different classes and a table. I > could reproduce this behaviour again. This time, I have observed a pattern. > > Table Name: Table2 has three fields:a, b, c > I have a class mapping to table: Table2DTO.java: having corresponding fields: > a, b, c > > I am getting ObjectModifiedException when some of the columns have "" value > > For example: > > I insert a row into Table2 with b and c value blanks. Printed the values of b > and c of Table2DTO object - shows empty strings > > Next time, when I try to modify the column which is blank, I am getting > ObjectModifiedException. Further modifications of this blank columns are > successful. > > I insert a row > a1 (b and c are blanks) > > modify b where a = a1 -------->ObjectModifiedException > modify b where a = a1 ---------> success > modify b where a = a1 ---------> success > > > How do I avoid it? By inserting some default value if nothing is supplied? > > > Thanks > Shiva. > > > > > > > -----Original Message----- > From: Shiva P. Kodityala [mailto:[EMAIL PROTECTED] > Sent: Thursday, December 01, 2005 1:23 PM > To: [email protected] > Subject: RE: [castor-user] ObjectModifiedException > > > Ralf, Thanks for your suggestions. > > Do you configure time-period somewhere to make an object available for > certain time? > > "According to my experience I expect > the problem happend at the last write operation before the failing one." > > I too feel the same.. I am doing commit and close resultset and database > objects after insert; :( > > Thanks > Shiva. > > -----Original Message----- > From: Ralf Joachim [mailto:[EMAIL PROTECTED] > Sent: Thursday, December 01, 2005 12:11 PM > To: [email protected] > Subject: Re: [castor-user] ObjectModifiedException > > > Hi Shiva > > > I'm really sorry but according to the stacktrace it is not possible to > find out what caused the exception. According to my experience I expect > the problem happend at the last write operation before the failing one. > In most cases it is quite difficult to track this as you may have > recognized yourself. I suggest you to prepare a test case that allows me > to reproduce the problem. At least with the information I have at the > moment I am not able to help you. > > There is one other thing that came to my mind being the reason for the > problem. If the object you want to change has been expired from cache > you may also get this ObjectModifiedException. > > Regards > Ralf > > > Shiva P. Kodityala schrieb: > > >>Ralf, >> >>I am still not able to figure out what is happening... >> >>Could you help me figuring out what is the problem by looking at the >>exception? Is it because of nulls? >> >>exception was logged org.exolab.castor.jdo.ObjectModifiedException: >>Transaction aborted: Object of type test.tables.User with identity hk has >>been modified by a concurrent transaction (cache entry is different from >>database row). The following fields have been changed [actual/expected >>value]: (test.tables.User).address1: [/null](test.tables.User).address2: >>[/null](test.tables.User).address3: [null/null](test.tables.User).city: >>[null/null](test.tables.User).state: [/null] >> >>Thanks >> >> >>-----Original Message----- >>From: Ralf Joachim [mailto:[EMAIL PROTECTED] >>Sent: Tuesday, November 29, 2005 11:31 PM >>To: [email protected] >>Subject: Re: [castor-user] ObjectModifiedException >> >> >>Hi Shiva, >> >>a ObjectModifiedException is thrown by Castor if the object in cache >>differs from the objects representation in the database. There is a >>various number of reasons that can cause that: >> >>- another application changes the values in the database >>- you have mapped the same table with 2 mappings and change the values >>through both of them >>- your database does change values when storing (e.g. convert null to >>empty String, clip String to column length) >> >>Castor is only able to recognize that changes when you try to modify the >>object the next time after one of the above situation happend. >> >>Regards >>Ralf >> >> >>Shiva P. Kodityala schrieb: >> >> >> >> >>>I am trying to modify one of the columns of an obtained row. >>> >>>Problem seems to be something to do with nulls. >>> >>>Here is the code: >>> >>>for(int i=0; i<numberOfSelectedUsers;i++) >>> >>>{ >>> >>>database = connectionPool.getJDOConnection(); >>> >>>database.begin(); >>> >>>String oqlString = "select p from test.tables.User p where userid=$1"; >>> >>>oql = database.getOQLQuery(oqlString); >>> >>>oql.bind( selectedUserIds[i]); >>> >>>results = oql.execute(); >>> >>>User user = null; >>> >>>while (results.hasMore()) { >>> >>>user = (User) results.next(); >>> >>>} >>> >>>user.setActivationstatus(toStatus); >>> >>>database.commit(); >>> >>>database.close(); >>> >>>database = null; >>> >>>} >>> >>>Here is error. It is not happening always.. I don't know why. >>> >>>following fields have been changed [actual/expected value]: >>>(test.tables.User).address1: [/null](test.tables.User).address2: >>>[/null](test.tables.User).address3: [null/null](test.tables.User).city: >>>[null/null](test.tables.User).state: [/null](test.tables.User).country: >>>[null/null](test.tables.User).ZIP: [/null] >>>[11/29/05 22:25:06:609 PST] 7e116486 DatabaseImpl E >>>org.exolab.castor.jdo.engine.DatabaseImpl TRAS0014I: The following >>>exception was logged org.exolab.castor.jdo.ObjectModifiedException: >>>Transaction aborted: Object of type test.tables.User with identity hk has >>>been modified by a concurrent transaction (cache entry is different from >>>database row). The following fields have been changed [actual/expected >>>value]: (test.tables.User).address1: [/null](test.tables.User).address2: >>>[/null](test.tables.User).address3: [null/null](test.tables.User).city: >>>[null/null](test.tables.User).state: [/null](test.tables.User).country: >>>[null/null](test.tables.User).ZIP: [/null] >>>at org.exolab.castor.jdo.engine.SQLEngine.store(SQLEngine.java:1013) >>>at org.exolab.castor.persist.ClassMolder.store(ClassMolder.java:834) >>>at org.exolab.castor.persist.LockEngine.store(LockEngine.java:779) >>>at >>>org.castor.persist.TransactionContext.prepareForCreate(TransactionContext..java:1654) >>>at >>>org.castor.persist.TransactionContext.prepare(TransactionContext.java:1618) >>>at org.exolab.castor.jdo.engine.DatabaseImpl.commit(DatabaseImpl.java:521) >>>at test.actions.ChangeStatusAction.changeStatus(ChangeStatusAction.java:226) >>>at test.actions.ChangeStatusAction.active(ChangeStatusAction.java:120) >>>at test.actions.ChangeStatusAction.execute(ChangeStatusAction.java:47) >>>at >>>org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) >>>at >>>org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) >>>at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) >>>at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) >>>at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) >>>at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) >>>at >>>com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110) >>>at >>>com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174) >>>at >>>com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313) >>>at >>>com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116) >>>at >>>com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283) >>>at >>>com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42) >>>at >>>com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40) >>>at >>>com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:983) >>>at >>>com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:564) >>>at >>>com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:200) >>>at >>>com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:119) >>>at >>>com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:276) >>>at >>>com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71) >>>at >>>com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:182) >>>at >>>com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334) >>>at >>>com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56) >>>at >>>com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:618) >>>at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:439) >>>at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:672) >>>.. >>> >>> org.exolab.castor.jdo.ObjectModifiedException: Transaction aborted: Object >>> of type test.tables.User with identity hk has been modified by a concurrent >>> transaction (cache entry is different from database row). The following >>> fields have been changed [actual/expected value]: >>> (test.tables.User).address1: [/null](test.tables.User).address2: >>> [/null](test.tables.User).address3: [null/null](test.tables.User).city: >>> [null/null](test.tables.User).state: [/null](test.tables.User).country: >>> [null/null](test.tables.User).ZIP: [/null] >>>at org.exolab.castor.jdo.engine.SQLEngine.store(SQLEngine.java:1013) >>>at org.exolab.castor.persist.ClassMolder.store(ClassMolder.java:834) >>>at org.exolab.castor.persist.LockEngine.store(LockEngine.java:779) >>>at >>>org.castor.persist.TransactionContext.prepareForCreate(TransactionContext..java:1654) >>>at >>>org.castor.persist.TransactionContext.prepare(TransactionContext.java:1618) >>>at org.exolab.castor.jdo.engine.DatabaseImpl.commit(DatabaseImpl.java:521) >>>at test.actions.ChangeStatusAction.changeStatus(ChangeStatusAction.java:226) >>>at test.actions.ChangeStatusAction.active(ChangeStatusAction.java:120) >>>at test.actions.ChangeStatusAction.execute(ChangeStatusAction.java:47) >>>at >>>org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) >>>at >>>org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) >>>at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) >>>at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) >>>at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) >>>at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) >>>at >>>com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110) >>>at >>>com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174) >>>at >>>com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313) >>>at >>>com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116) >>>at >>>com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283) >>>at >>>com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42) >>>at >>>com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40) >>>at >>>com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:983) >>>at >>>com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:564) >>>at >>>com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:200) >>>at >>>com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:119) >>>at >>>com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:276) >>>at >>>com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71) >>>at >>>com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:182) >>>at >>>com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334) >>>at >>>com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56) >>>at >>>com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:618) >>>at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:439) >>>at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:672) >>> >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R >>>org.exolab.castor.jdo.ObjectModifiedException: Transaction aborted: Object >>>of type test.tables.User with identity hk has been modified by a concurrent >>>transaction (cache entry is different from database row). The following >>>fields have been changed [actual/expected value]: >>>(test.tables.User).address1: [/null](test.tables.User).address2: >>>[/null](test.tables.User).address3: [null/null](test.tables.User).city: >>>[null/null](test.tables.User).state: [/null](test.tables.User).country: >>>[null/null](test.tables.User).ZIP: [/null] >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>org.exolab.castor.jdo.engine.SQLEngine.store(SQLEngine.java:1013) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>org.exolab.castor.persist.ClassMolder.store(ClassMolder.java:834) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>org.exolab.castor.persist.LockEngine.store(LockEngine.java:779) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>org.castor.persist.TransactionContext.prepareForCreate(TransactionContext..java:1654) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>org.castor.persist.TransactionContext.prepare(TransactionContext.java:1618) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>org.exolab.castor.jdo.engine.DatabaseImpl.commit(DatabaseImpl.java:521) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>test.actions.ChangeStatusAction.changeStatus(ChangeStatusAction.java:226) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>test.actions.ChangeStatusAction.active(ChangeStatusAction.java:120) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>test.actions.ChangeStatusAction.execute(ChangeStatusAction.java:47) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>javax.servlet.http.HttpServlet.service(HttpServlet.java:760) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>javax.servlet.http.HttpServlet.service(HttpServlet.java:853) >>>[11/29/05 22:25:06:656 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:983) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:564) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:200) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:119) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:276) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:182) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:618) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.http.HttpConnection.run(HttpConnection.java:439) >>>[11/29/05 22:25:06:672 PST] 7e116486 SystemErr R at >>>com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:672) >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>>------------------------------------------------------------------------ >>> >>>------------------------------------------------- >>>If you wish to unsubscribe from this list, please >>>send an empty message to the following address: >>> >>>[EMAIL PROTECTED] >>>------------------------------------------------- >>> >>> >>> >> >> >>------------------------------------------------- >>If you wish to unsubscribe from this list, please >>send an empty message to the following address: >> >>[EMAIL PROTECTED] >>------------------------------------------------- >> >> >>------------------------------------------------- >>If you wish to unsubscribe from this list, please >>send an empty message to the following address: >> >>[EMAIL PROTECTED] >>------------------------------------------------- >> >> >> > > > > ------------------------------------------------- > If you wish to unsubscribe from this list, please > send an empty message to the following address: > > [EMAIL PROTECTED] > ------------------------------------------------- > > > ------------------------------------------------- > If you wish to unsubscribe from this list, please > send an empty message to the following address: > > [EMAIL PROTECTED] > ------------------------------------------------- > > > ------------------------------------------------- > If you wish to unsubscribe from this list, please > send an empty message to the following address: > > [EMAIL PROTECTED] > ------------------------------------------------- > > ------------------------------------------------- If you wish to unsubscribe from this list, please send an empty message to the following address: [EMAIL PROTECTED] ------------------------------------------------- ------------------------------------------------- If you wish to unsubscribe from this list, please send an empty message to the following address: [EMAIL PROTECTED] -------------------------------------------------

