Re: Check / Force field uniqueness in EOF
Re: Check / Force field uniqueness in EOF
- Subject: Re: Check / Force field uniqueness in EOF
- From: Chuck Hill <email@hidden>
- Date: Wed, 25 Mar 2009 12:51:55 -0700
On Mar 25, 2009, at 12:46 PM, Dan Grec wrote:
Full of questions today....
I have an EO that has a field "RemoteSystemID" that must be unique
in the DB.
I have the constraint in the DB and that works well.
What I would like, is a way in EOF to detect non-uniqueness without
going to the db and relying on the SQL Exception.
Won't work, can't work, don't do it!
Currently, I have something like this:
@Override
public void validateForSave() throws
NSValidation.ValidationException {
validateRemoteSystemId();
super.validateForSave();
}
//check that no Categories have this same remoteSystemID
public void validateRemoteSystemId() {
NSArray<Category> categories =
SCEOFetcher.objectsMatchingKeyAndValue(editingContext(),
Category.class, _Category.REMOTE_SYSTEM_ID_KEY, remoteSystemId(),
EOFetcher.DBEC);
if (categories.count() > 1)
throw new NSValidation.ValidationException("Category Remote
System Id must be unique.", this, REMOTE_SYSTEM_ID_KEY);
}
This works really well if there is already one in the DB with a
value of say "123" and I try to add with with a value of "123".
This does not work if I try to add two at the same time with a value
of "567", it allows them both through.
Does anyone have a strategy to catch uniqueness at the EOF level?
Or, is it fine to just rely on the DB throwing an SQLException and
catch that after ec().saveChanges() ?
That is the only way to guarantee uniqueness. You can use the code
above to do a tentative validation (with the constraint still in place
on the DB), but the the DB has to be the ultimate authority on what is
and is not unique.
(I feel like letting that happen is bad, and might leave EOF in an
un-happy state - is there any chance of that?)
No. Failures in saveChanges at the database level are expected by EOF
and handled just fine.
Chuck
--
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
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden