Re: Can't modify EO objects! ARGH! =(
Re: Can't modify EO objects! ARGH! =(
- Subject: Re: Can't modify EO objects! ARGH! =(
- From: Chuck Hill <email@hidden>
- Date: Thu, 17 Jul 2003 13:23:51 -0700
- Organization: Global Village Consulting, Inc.
I'm not too sure what might be causing this, there is a lot in your
session is not here.
What is happening is that an Update x SET a = b WHERE y=z; is failing
as nothing matches y=z. The first thing to do is to look at the SQL,
and then at your data to see what is not matching. Then work backward
from there.
To see the SQL being sent by the app:
public static void logSQL(boolean shouldLog) {
if (shouldLog) {
NSLog.allowDebugLoggingForGroups(NSLog.DebugGroupSQLGeneration
| NSLog.DebugGroupDatabaseAccess
| NSLog.DebugGroupEnterpriseObjects);
} else {
NSLog.refuseDebugLoggingForGroups(NSLog.DebugGroupSQLGeneration
| NSLog.DebugGroupDatabaseAccess
| NSLog.DebugGroupEnterpriseObjects);
}
}
Chuck
P.S. You are probably putting more logic in Session that is optimal.
Much of that would be more comfortable in another class, perhaps even
the page.
P.P.S. Hungarian naming is ugly and unnecessary in Java.
Goodbye Bill wrote:
Chuck,
Thank you for the feedback. I have changed that line of code, but I am
still having the same problem. Again, the "Member" object (the new object)
saves fine. It's the "Signup Request" object (the one I loaded from the
database) that fails for any type of update or delete.
Here are the two methods that load and save the objects:
public class Session extends WOSession {
public EOEditingContext oContext = this.defaultEditingContext();
protected SignupRequest my_oCurrentSignupRequest;
protected Member my_oNewSignupMember;
public void CreateEmptySignupMember() {
setNewSignupMember(null);
setNewSignupMember(new Member());
oContext.insertObject(my_oNewSignupMember);
}
public void SaveNewMember() {
if ( isNewSignupMemberCreated() == false ) { return; }
try {
my_oCurrentSignupRequest.setIsAvailable(new Integer(0));
oContext.saveChanges();
isSignupStepCComlete(Boolean.TRUE);
}
catch ( Exception oErr ) {
oErr.printStackTrace();
setSignupError("An unexpected database error occurred while
trying to create your database. Please try again later.");
}
}
}
The only error I receive is:
[2003-07-17 15:49:25 EDT] <WorkerThread3> === Rollback Internal
Transaction
com.webobjects.eoaccess.EOGeneralAdaptorException:
updateValuesInRowDescribedByQualifier --
com.webobjects.jdbcadaptor.JDBCChannel method failed to update
row in database
Any ideas?
On 20030717 1336, "Chuck Hill" <email@hidden> wrote:
Goodbye Bill wrote:
default EC. I then create a new "Member" object without
inserting it into the EC. I populate the variables of
the "Member" object, stick it into the EC
Klaxons and red flashing lights go on.
Don't do that! The pattern is:
1. Create
2. Insert
3. Populate
4. Save
See:
http://wodev.spearway.com/cgi-bin/WebObjects/WODev.woa/wa/Main?wikiPage=EOFCom
mandments
Chuck
Goodbye Bill wrote:
Could someone please tell me why I cannot destroy an object in the database
once it is loaded into the session?
DETAILS:
I have a two-step signup process for my web site. Users must create a
"Signup Request" including their name and email address. A confirmation
code is then sent their email address. They must return to the site and
enter this confirmation code before their "Member" object will get created.
ISSUE:
When the user returns to the site to enter their confirmation code, I load
the "Signup Request" object into a local object within the session using the
default EC. I then create a new "Member" object without inserting it into
the EC. I populate the variables of the "Member" object, stick it into the
EC, then attempt to save the "Member" object while blowing away the "Signup
Request" object. I have tried this as two separate commands and together as
one. The "Member" object always saves fine however I cannot do anything
with the "Signup Request" object.
ERROR DETAILS FOLLOW:
com.webobjects.eoaccess.EOGeneralAdaptorException:
updateValuesInRowDescribedByQualifier --
com.webobjects.jdbcadaptor.JDBCChannel method failed to update row in
database
at
com.webobjects.eoaccess.EODatabaseContext._exceptionWithDatabaseContextInfor
mationAdded(EODatabaseContext.java:4658)
at
com.webobjects.eoaccess.EODatabaseContext.performChanges(EODatabaseContext.j
ava:6365)
at
com.webobjects.eocontrol.EOObjectStoreCoordinator.saveChangesInEditingContex
t(EOObjectStoreCoordinator.java:411)
at
com.webobjects.eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:
3128)
at Session.SaveNewMember(Session.java:85)
_______________________________________________
webobjects-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/webobjects-dev
Do not post admin requests to the list. They will be ignored.
--
Chuck Hill email@hidden
Global Village Consulting Inc. http://www.global-village.net
Progress is the mother of all problems.
- G. K. Chesterton
_______________________________________________
webobjects-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/webobjects-dev
Do not post admin requests to the list. They will be ignored.