On Dec 8, 2010, at 11:10 AM, Calven Eggert wrote: > On 2010-12-08, at 1:44 PM, Chuck Hill wrote: >> On Dec 8, 2010, at 10:41 AM, Calven Eggert wrote: >> >>> I still don't follow what you are saying. actually, I want to insert two >>> records at a time. I have a page that allows the user to insert records, >>> but I don't actually do the insert until the user clicks on the save button. >> >> As in ec.insertObject()? That is violating EOF commandments for sure. > then how? (I've read the commandments and I don't see your comment above in > there) > > Essentially this is what is done... > EOClassDescription cd = > EOClassDescription.classDescriptionForEntityName(entityName); > EOEnterpriseObject eo = > (EOEnterpriseObject)cd.createInstanceWithEditingContext(ec, null);
Save some typing: MyClass myClass = (MyClass)EOUtilities.createAndInsertInstance(ec, entityName); Wonder templates make it even easier. > ec.insertObject(eo); > eo.takeValueForKey(noteDescription, "notesdescription"); That is OK, provided that noteDescription is a local ivar and not on an EO. Touching an attribute of an EO that has not been inserted (which is what I thought you were describing) is a Bad Thing (tm) to do. > ... > ec.saveChanges(); If that is exactly what you are doing, then ec is already trashed by the time you get here or is not locked. I would suspect the former. Tracking this problem down to the code causing it can be very hard as the cause maybe far away in code and appear totally innocent. Chuck >>> that's when I do the saving/inserting into the database. but then the >>> sequence numbers are incorrect for the second one. >>> >>> what is the other insert you are talking about? >>> >>> Still confused on what you are suggesting I do... >> >> What I am suggesting is that you DON'T violate EOF commandments. You are >> doing something that is corrupting the internal EOF state. Don't do that >> and it will work. >> >> >> Chuck >> >> >> >>> >>> >>> On 2010-12-08, at 1:24 PM, Chuck Hill wrote: >>> >>>> On Dec 8, 2010, at 10:20 AM, Calven Eggert wrote: >>>> >>>>> the second record is valid. I am indeed wanting to insert two records. >>>>> so why would the retrieving of the next sequence number return me a >>>>> number not in sequence? >>>> >>>> It is not. I am pretty sure that it is doing what I said. There is >>>> another (later) insert that you don't see due to the DB error. >>>> >>>> >>>> Chuck >>>> >>>> >>>> >>>>> On 2010-12-08, at 12:24 PM, Chuck Hill wrote: >>>>> >>>>>> >>>>>> On Dec 8, 2010, at 8:28 AM, Calven Eggert wrote: >>>>>> >>>>>>> Recently a WO app has been getting the unique constraint error when >>>>>>> creating a record. This application has been running for years and so >>>>>>> I'm surprised at this 'just' showing up. here is the problem: you'll >>>>>>> see in the following lines that an index is retrieved for >>>>>>> jobs_notes_seq twice because I'm inserting two records. next you'll >>>>>>> see the insert statements. look at the notesid field. >>>>>>> >>>>>>> [2010-12-8 10:54:32 EST] <WorkerThread1> === Begin Internal Transaction >>>>>>> [2010-12-8 10:54:32 EST] <WorkerThread1> evaluateExpression: >>>>>>> <com.webobjects.jdbcadaptor.OraclePlugIn$OracleExpression: "SELECT >>>>>>> JOBS_NOTES_SEQ.NEXTVAL FROM DUAL" withBindings: > >>>>>>> [2010-12-8 10:54:32 EST] <WorkerThread1> 1 row(s) processed >>>>>>> [2010-12-8 10:54:32 EST] <WorkerThread1> === Commit Internal >>>>>>> Transaction >>>>>>> [2010-12-8 10:54:32 EST] <WorkerThread1> === Begin Internal Transaction >>>>>>> [2010-12-8 10:54:32 EST] <WorkerThread1> evaluateExpression: >>>>>>> <com.webobjects.jdbcadaptor.OraclePlugIn$OracleExpression: "SELECT >>>>>>> JOBS_NOTES_SEQ.NEXTVAL FROM DUAL" withBindings: > >>>>>>> [2010-12-8 10:54:32 EST] <WorkerThread1> 1 row(s) processed >>>>>>> [2010-12-8 10:54:32 EST] <WorkerThread1> === Commit Internal >>>>>>> Transaction >>>>>>> [2010-12-8 10:54:32 EST] <WorkerThread1> === Begin Internal Transaction >>>>>>> [2010-12-8 10:54:32 EST] <WorkerThread1> evaluateExpression: >>>>>>> <com.webobjects.jdbcadaptor.OraclePlugIn$OracleExpression: "INSERT INTO >>>>>>> JOBS_NOTES(NOTES_SUBMITTED_BY, NOTES_HYPERLINK, NOTES_USER_VISIBLE, >>>>>>> NOTES_JOB_ID, NOTES_SUBMITTED_DATE, NOTES_DESCRIPTION, NOTES_ID, >>>>>>> NOTES_ATTACHMENT_NAME) VALUES (?, NULL, ?, ?, ?, ?, ?, ?)" >>>>>>> withBindings: 1:204(submittedby), 2:"N"(uservisible), 3:292(jobid), >>>>>>> 4:2010-12-08 10:54:17(submitteddate), 5:"gg"(notesdescription), >>>>>>> 6:922(notesid), 7:"Overview.graffle"(attachmentname)> >>>>>>> [2010-12-8 10:54:32 EST] <WorkerThread1> evaluateExpression: >>>>>>> <com.webobjects.jdbcadaptor.OraclePlugIn$OracleExpression: "INSERT INTO >>>>>>> JOBS_NOTES(NOTES_SUBMITTED_BY, NOTES_HYPERLINK, NOTES_USER_VISIBLE, >>>>>>> NOTES_JOB_ID, NOTES_SUBMITTED_DATE, NOTES_DESCRIPTION, NOTES_ID, >>>>>>> NOTES_ATTACHMENT_NAME) VALUES (?, NULL, ?, ?, ?, ?, ?, ?)" >>>>>>> withBindings: 1:204(submittedby), 2:"N"(uservisible), 3:292(jobid), >>>>>>> 4:2010-12-08 10:54:23(submitteddate), 5:"hh"(notesdescription), >>>>>>> 6:56(notesid), 7:"Overview.graffle"(attachmentname)> >>>>>>> [2010-12-8 10:54:33 EST] <WorkerThread1> === Rollback Internal >>>>>>> Transaction >>>>>>> >>>>>>> see how one is 922 and another is 56? 922 is correct but the 56 should >>>>>>> be 923. >>>>>> >>>>>> I don't think that is the problem. I think the problem is that the >>>>>> second was supposed to be an UPDATE or DELETE statement. This happens >>>>>> when you violate EOF commandments (not locking properly for example). >>>>>> EOF gets confused between one operation and another. >>>>>> >>>>>> Go forth and sin no more! >>>>>> >>>>>> Chuck >>>>>> >>>>>> >>>>>>> very strange. then when the records are committed, sometimes I get the >>>>>>> dreaded error message: >>>>>>> >>>>>>> com.webobjects.eoaccess.EOGeneralAdaptorException: EvaluateExpression >>>>>>> failed: <com.webobjects.jdbcadaptor.OraclePlugIn$OracleExpression: >>>>>>> "INSERT INTO JOBS_NOTES(NOTES_SUBMITTED_BY, NOTES_HYPERLINK, >>>>>>> NOTES_USER_VISIBLE, NOTES_JOB_ID, NOTES_SUBMITTED_DATE, >>>>>>> NOTES_DESCRIPTION, NOTES_ID, NOTES_ATTACHMENT_NAME) VALUES (?, NULL, ?, >>>>>>> ?, ?, ?, ?, ?)" withBindings: 1:204(submittedby), 2:"N"(uservisible), >>>>>>> 3:292(jobid), 4:2010-12-08 10:54:23(submitteddate), >>>>>>> 5:"hh"(notesdescription), 6:56(notesid), >>>>>>> 7:"Overview.graffle"(attachmentname)> >>>>>>> Next exception:SQL State:23000 -- error code: 1 -- msg: ORA-00001: >>>>>>> unique constraint (COREDEV3.SYS_C0031657) violated >>>>>>> >>>>>>> Obviously this is a problem because number 56 was already a record in >>>>>>> the table. Sometimes, there is no error message and the record is not >>>>>>> even created. And sometimes, when the index is correct the record is >>>>>>> created successfully. argh! >>>>>>> >>>>>>> Anyone have this problem before or know what I can do to solve this >>>>>>> mystery? (I've dropped the sequences and recreated them a couple of >>>>>>> times. but it doesn't solve the problem) >>>>>>> >>>>>>> Thanks for your time. >>>>>>> >>>>>>> Calven >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Do not post admin requests to the list. They will be ignored. >>>>>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>>>>> Help/Unsubscribe/Update your Subscription: >>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net >>>>>>> >>>>>>> This email sent to ch...@global-village.net >>>>>> >>>>>> -- >>>>>> Chuck Hill Senior Consultant / VP Development >>>>>> >>>>>> Practical WebObjects - for developers who want to increase their overall >>>>>> knowledge of WebObjects or who are trying to solve specific problems. >>>>>> http://www.global-village.net/products/practical_webobjects >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>> >>>> -- >>>> Chuck Hill Senior Consultant / VP Development >>>> >>>> Practical WebObjects - for developers who want to increase their overall >>>> knowledge of WebObjects or who are trying to solve specific problems. >>>> http://www.global-village.net/products/practical_webobjects >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>> >>> >> >> -- >> Chuck Hill Senior Consultant / VP Development >> >> Practical WebObjects - for developers who want to increase their overall >> knowledge of WebObjects or who are trying to solve specific problems. >> http://www.global-village.net/products/practical_webobjects >> >> >> >> >> >> >> > -- Chuck Hill Senior Consultant / VP Development Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems. http://www.global-village.net/products/practical_webobjects
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com