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 protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to